博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC中Areas的namespaces和UseNamespaceFallback
阅读量:6280 次
发布时间:2019-06-22

本文共 1415 字,大约阅读时间需要 4 分钟。

今天用ASP.NET MVC的时候,测试Areas区域发现一个问题,例如:

Areas - Apps -Controllers - DemoController.cs

                   -Views - Demo - Index.cshtml

Controllers – 无

Views – 无

此时进行路由测试,却意外发现:

http://localhost/Apps/Demo 这个URL正常访问没问题

http://localhost/Demo 却不是找不到页面,而是会执行DemoController到但报错找不到Index.cshtml这个View

可见如果根目录下的Controller中没有DemoController的时候

http://localhost/Demo竟然也会被路由到Areas -> Apps -> Controllers文件夹下的DemoController

这样的URL路由规则明显是不够严谨的!这并不是预期设计的结果!

后来爬到文章,发现如果在当前的命名空间找不到Controller,MVC会自动去搜寻别的Controller,晕倒,

所以必须在MapRoute时加上参数namespaces和属性DataTokens["UseNamespaceFallback"] = false;

代码如下(标红),这样,MVC才会锁定在指定的NameSpace下寻找,经测试后正常。

示例文件:RouteConfig.cs

1 public static void RegisterRoutes(RouteCollection routes) 2 { 3     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 4  5     routes.MapRoute( 6         name: "Default", 7         url: "{controller}/{action}/{id}", 8         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 9         namespaces: new string[] { "MvcTest.Controllers" }10     ).DataTokens["UseNamespaceFallback"] = false;11 }

示例文件:AppAreaRegistration.cs

1 public override void RegisterArea(AreaRegistrationContext context)2 {3     context.MapRoute(4         "Apps_default",5         "Apps/{controller}/{action}/{id}",6         new { action = "Index", id = UrlParameter.Optional },7         new string[] { "MvcTest.Areas.Apps.Controllers" }8     ).DataTokens["UseNamespaceFallback"] = false;9 }

转载地址:http://buiva.baihongyu.com/

你可能感兴趣的文章
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>