zoukankan      html  css  js  c++  java
  • 学习第五天@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();.
  • 相关阅读:
    CSS 之 伪类及伪元素
    php使用strlen()判断中文汉字字符串长度
    代码评审
    Windows下获取本机IP地址方法介绍
    c++ windows 获取mac地址
    Windows编译安装OpenSSL
    visio studio2008 删除最近的项目
    Windows中杀死占用某个端口的进程
    apache日志文件太大的问题
    text段,data段,bss段,堆和栈
  • 原文地址:https://www.cnblogs.com/xiaxiazl/p/2340512.html
Copyright © 2011-2022 走看看