快速搞懂ASP.NET MVC
meter defaults ); } } MapRoute 方法里的三个参数,分别代表:routes、route name 、URL。其中第一个参数 "Default",代表了项目中的 Default.aspx (不是位于 View 文件夹里)。这个 URL Routing 是为了解决用户直接访问域名 时,会出现找不到文件的情形,所以要采用这个方法,将主页改成 Routing 到 Home/Index 上。因此当您在浏览器的地址栏输入: http://localhost: 端口号/Default.aspx 或 http://localhost:端口号 亦会 导至图 2 中的 Views/Home/Index.aspx。 System.Web.Mvc Namespace (MSDN Library, 暂无中文版): http://msdn.microsoft.com/en- us/library/system.web.mvc.aspx RouteCollectionExtensions.MapRout e Method: http://msdn.microsoft.com/en- us/library/dd470521.aspx ASP.NET MVC Framework (Part 1) (ScottGu 于 2007 年 11 月发表的 blog,图中为 ASP.NET MVC 在 Beta 版时的画 面): http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net- mvc-framework-part-1.aspx 在图 3 的首页里,当鼠标移到右侧的 hyperlink 时,实际连结的页面名称 (某个 .aspx) 并不会直接显示在浏览器的 地址栏、浏览器下方的信息栏里,因为 request「转向」的运作皆统一由 Controller 处理,亦即由图 2 中 HomeController.cs 里,配置的 System.Web.Mvc.ActionResult 类的 actionName 去指定,因此浏览器的网址仍 会维持 Site.Master (MasterPage) 里的 Html.ActionLink 绑定,所配置的 actionName (即下方两行代码的第二个参数 "Index"、 "About"),而不会如过去 ASP.NET 1.x / 2.0 般,直接在地址栏里 ,显示某一个 .aspx 的页面名称。 以下为 Site.master 的一部分代码 :
Controller 除了用来控管整个网站的流程转向外, 事实上还能避免大量的代码重复,亦即统一处理一些系统可「共享」的功能,例 如:验证用户身份、输入验证 (validate)、Session 管理,或是像购物网站中 ,当购物车里物品的添加、修改、移除时,任何用户皆相同的「共通逻辑」处理 ;以及要结帐时,去做购物数量、单价相乘的计算动作,或将某个存储购物明细 的 Collection 数据结构对象加入 Session,最后再转向某一个页面 (View)。 总结: 本帖仅是给 .NET 技术人员,作为初步了解 MVC Pattern ,以及 ASP.NET MVC Framework 的入门文章。若有兴趣深入研究的网友,可参 考本帖最下方的「相关文件」,另博客园及网络上已有许多相关的帖子。至于通 用的 MVC 观念,亦可参考坊间 JSP / Struts / J2EE 的网络论坛、相关书籍, 或 Design Patterns (设计模式) 中的「复合模式 (Compound Pattern)」[15] 。 如同 MSDN Magazine 中提到的 [7],ASP.NET MVC 不是用来取代传统 ASP.NET WebForm 的,两者有各自的优点和缺点,而将来的 ASP.NET MVC 还可 能在 UI、控件拖曳、Routing 上持续改进。不过身为一个技术人员,最好能早 点厘清两者的特性与优缺点 [4] [6],以评估是否要深入学习,或在将来的项目 导入;并思考为什么微软要推出这个框架,且还花了至少两年的时间很慎重地去 研发。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |