ASP.NET MVC框架 (第二部分): URL路径选择
Lambda表达式时,我谈到了Lambda表达式既可以编译出成代 码代理(delegate),也可以编译成表达式树对象,然后在运行时可以用来分析Lambda表达式。对于Html.ActionLink<T> 辅助方法,我 们使用这个表达式树选项,然后在运行时分析对应的lambda,查出它调用的action方法以及相关的参数类型,在表达式中指定的名称和值等。 然后我们可以在MVC URL路径选择系统中使用这些信息, 返回合适的URL和相关联的HTML。
重要注意事项: 当使用这Lambda表达式方法时,我们实际上从不运行对应的Controller action方法。例如,下面的代码并不调用我们的 SearchController中"Results" action方法: 实际上,它只是返回这个HTML超链接: 如果这个超链接被用户点击的话,它会向服务器发回一个请求,该请求会调用SearchController的Results action方法。 单元测试路径 ASP.NET MVC框架的一个核心设计原则是促进很好的测试支持。 跟MVC框架的其他部分一样,你可以轻松地单元测试路径和路径匹配规则。 MVC路径选择系统可以独立于ASP.NET生成实例和运行,这意味着你可以在任何单元测试库里装载和单元测试路径模式(而不用启动web服务器) ,可以使用任何单元测试框架(NUnit, MBUnit, MSTest等等)。 虽然你可以在你的单元测试中直接单元测试一个ASP.NET MVC应用的全局RouteTable映射集合,但一般来说,让单元测试改变或者依赖于一 个全局的状态不是一个很好的主意。一个你可以使用的较好的模式是,把你的路径注册逻辑放在一个象下面这样的RegisterRoutes()辅助方法 中,对作为参数传入的RouteCollection进行操作(注:我们也许会把这个模式在下个预览版更新中做成默认的VS模板模式): 然后,你可以编写单元测试,创建自己的RouteCollection实例,调用Application的RegisterRoutes辅助方法,在其中注册应用的路径选择 规则。然后,你可以向应用发出模拟请求,核实这些请求确有注册了的正确的控制器和action方法,而不用担心任何副作用: 结语 希望这个贴子提供了关于ASP.NET MVC路径选择架构工作原理的一些细节,以及你如何可以使用它来定制发布在你的ASP.NET MVC应用中的 URL的结构和布局。 在默认情形下,在你创建一个新的ASP.NET MVC Web应用时,它会预先定义一个你可以使用的默认的 /[controller]/[action]/[id] 路径选 择规则,而不必手工配置或启用什么。这应该允许你不用注册你自己的自定义路径选择规则,就可以建造许多应用。但希望上面的内容示范了 ,如果你想对你自己的URL格式做自定义结构的话,做起来并不难, MVC框架对此提供了许多的功能和灵活性。 希望本文对你有所帮助, 文章来源:http://blog.joycode.com/scottgu/archive/2007/12/04/112249.aspx |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |