快速搞懂ASP.NET MVC
n」的选项。创建一个默认的 MVC 项目后, 其在 VS 解决方案的结构如下图所示:
图 2 View 中的 ASPX、ASCX、MasterPage 纯粹负责显示用,默认没 有配置 Code-Behind 文件 (aspx.cs) 如上图 2,ASP.NET MVC 项目,会 自动产生存储 MVC 文件的三个文件夹、控制流程的两个 Controller 类、多个 没有 Code-Behind 的 View 页面,和定义 Routing rules 的 Global.asax.cs 。 事实上版工我在一年前试玩 ASP.NET MVC Beta 版时,当时的 View 默认仍配有 Code-Behind 文件,但里面空无一物,只有一行注释: !-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. -- 在前阵子发布的正式版里,View 默认已不配置 Code-Behind 文件。此外,ASP.NET MVC 里的 View,为了让项目开发更明确地切割,已不再 有页面初始化和加载方法,也没有事件处理程序,除了基类声明以外没有任何内 容,基类声明为 System.Web.Mvc.ViewPage,而不再是过去 WebForm 的 System.Web.UI.Page。 新创的 ASP.NET MVC 项目,直接按 F5 即可执行 ,如下图 3 所示。但由于 MVC 的 View 会在显示前先要求 Controller 运行 ( 参考图 1),因此若您尝试将 View 里的某个 .aspx 设为「起始页」后,按 F5 执行时,反而会发生「HTTP 404. The resource cannot be found.」的错误, 亦即若想直接导航至该页面将不起作用。 图 3 ASP.NET MVC 项目的首页 您会发现浏览器里的 URL 会 像下面这样,网址不是具体的 .aspx 扩展名: http://localhost:端口 号/Home/index http://localhost:端口号 事实上该页的内容,是 去捉 Views/Home 文件夹底下,的 Index.aspx 的内容来呈现。其由 Global.asax.cs 配置,并用了「URL 重写 (Url Routing)」,让用户可以按你 自己定义的的规则来访问网站 [14]。 在图 3 首页的右侧,会有两个 hyperlink,可分别导向「LogOn.aspx」、「About.aspx」页面;但 hyperlink 要导向哪一个页面,不是写死在 View 的页面中 (已无 Code-Behind),而是统 一由 Global.asax.cs 去定义 Routing rules,去解析当浏览器收到 URL、表单 或任何 request 时,应该要扔给哪一个 Controller 自定义类去处理;再由该 个被指定的 Controller (如上图 2 里默认自动产生的 HomeController.cs), 里面所定义的一或多个 System.Web.Mvc.ActionResult 类,以及 View 方法 ( 术语叫 action method),去设定要把 UI render 回哪一个 View (页面) 去, 也就是本文一开始所提到的 (参考本帖图 1),Model 2 架构是由 Controller 文件,去统一控管整个 ASP.NET 系统的流程、页面导向,而不是写死在各个 aspx.cs 文件里。 以下为 Global.asax.cs 的一部分代码,网友们可搭 配参考上图 2 里 Controller、View 的结构去阅读:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |