MVC路由规则进一步了解

  本周由于工作需要,接触了PetaPoco(一个小型的ORM-框架)和ExtJS,这个项目框架是别人写好的,用的是MVC,我写的MVC程序一般控制器和视图都是在一个类库下面的,但是作者是把MVC中的控制器和视图分别写着两个类库当中的,这种写法我第一次见,所以我很想知道控制器是怎么和视图进行关联的。下面我简单说说我理解到的内容。

  一般的路由规则如下:

 routes.MapRoute(
                name: "Default_HasId_Html",// 路由名称
                url: "{controller}/{action}/{id}.html",// 带有参数的URL
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }// 参数默认值
                );



由于我写的程序控制器和视图都是在一个类库下面的,所以这种方式的路由就能匹配我所需要的一切,但是当他们不在一个类库下面的时候,这种写法就不能匹配到了,寻找解决
办法,原来在路由规则里面还有
另外一个参数
namespace (优先匹配的命名空间),
语法:
1 routes.MapRoute( 2 name: "MyRoute", 3 url: "{controller}/{action}", 4 defaults: new { controller = "Home",action="index"}, 5 namespaces: new string[] { "Course.Controllers" } 6 );

namespace是一个字符串数组,可以指定多个命名空间,注意:namespace是指定优先查找的命名空间,而不是指定查找的命名空间,当在指定优先查找的命名空间中找不到时还是会去其它的命名空间查找。

相信看到这里大家都明白了,如果控制器和视图不再同一个类库下面,要想他们正常访问,我们就得在路由规则里面指定优先查找的命名空间。

好了,今天就简单的写一点,下一篇可能是关于PetaPoco的一些理解,也有可能是别的。
posted @   晓菜鸟  阅读(1059)  评论(4编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示