学习第五天@MVC笔记三

 

问题:

 

传统的WebForm和MVC在执行过程上有什么区别?

 

传统WebForm的工作流程如下:

 

请求一个例如http://www.51mvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。

 

MVC的工作流程如下:

 

在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action,见下图:

 

 

 

问题:

MVC的访问路径是什么含义?

在ASP.NET MVC默认的视图引擎(WebFormViewEngine)下,view是按如下路径访问的:

/Views/{Controller}/{Action}.aspx

 

:这个很重要,和传统的WebForm是很不一样的,这里面是控制器名和动作名,而传统的是文件夹名和网页文件名。

 

问题:

MVC中如何控制哪个页面显示?

 

一个是默认的,相当于主页:

可以指定:

在Global.asax文件中的RegisterRoutes()方法:

 

routes.MapRoute("Home", "", new { controller = "Home", action = "Index", });

 

            routes.MapRoute(

                "Default", // Route name

                "{controller}/{action}/{id}", // URL with parameters

                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

            );

 

二是超链接方式:

在view文件中指定:

 

@Html.ActionLink("修改", "edit", new { id=item.UserId }) |

 

也可以写成<a href=”/user/edit@item.UserId”>修改</>

 

以上两种方式功能是一样的,只是第一种方法相对来说多一点点开销。

 

 

问题:

关于action的特性:

 

请求的方式:

[AcceptVerbs("GET")]

 

方法动作有PUT,GET,POST,HEAD等,这些参数是限制的。

GET:请求的数据随HTTP请求头发过去 
POST:请求的数据在HTTP请求头发过去之后再发过去 
PUT:用于上传数据 

 

方法的重命名:

[ActionName("Setting")]

这个里面的参数是可以自定义的。

 

 

 

问题:

action的返回值

 

ActionResult

Action方法返回ActionResult类型的结果。ASP.NET MVC为我们提供了几种ActionResult的实现,如下:

  • ViewResult. 呈现视图页给客户端。由View 方法返回.
  • RedirectToRouteResult. 重定向到另外一个Route。由RedirectToAction 和RedirectToRoute 方法返回.
  • RedirectResult. 重定向到另外一个URL。由 Redirect 方法返回.
  • ContentResult. 返回普通的内容。例如一段字符串。由 Content 方法返回.
  • JsonResult. 返回JSON结果。由 Json 方法返回.
  • EmptyResult. 如果Action必须返回空值,可以返回这个结果。Controller中没有实现的方法,可以return new EmptyResult();.

 

posted on 2012-02-06 18:54  夏夏知  阅读(196)  评论(0编辑  收藏  举报