当前位置:  开发笔记 > 编程语言 > 正文

ASP.Net MVC控制器命名空间数组

如何解决《ASP.NetMVC控制器命名空间数组》经验,为你挑选了1个好方法。

我注意到MapRoute扩展包含一个重载,它接受一个名为'namespaces'的string []参数.我读了谷歌对我的看法,据说这是为了帮助框架在其他地方看不到的地方找到控制器.

我做了一些尖峰,并尝试将控制器放在奇怪的位置.我把一个放在Scripts文件夹中; 我甚至在一个单独的程序集中构建了一个具有单独的根命名空间

如果不在命名空间参数中放置任何内容,一切都运行正常.如果我只在命名空间参数中放置一个命名空间,它仍然可以找到我的所有控制器.我想也许它会使用该数组来消除类似命名的控制器之间的歧义,但这也没有发生.MyProj.Controllers中的HomeController和SomeOtherName.Stuff中的HomeController仍会发生冲突.

所以我的问题是,该参数是否已被弃用?或者它仍以某种方式用于我尚未辨别的方式?



1> Paul..:

好吧,经过进一步的测试,我发现它不是一个过滤器,确切地说,但它也有点.即使你有部分错误,我也给你"回答"信用.

毕竟,它确实表现得像我认为它应该说它消除歧义.基本上,逻辑流程是这样的:

在_cache中查找与命名空间数组中的命名空间匹配的命名空间

如果找到了,请寻找正确名称的控制器

- 如果找到了,请将其归还

- 如果找不到,请返回其通常看的其他地方的搜索

如果找不到,那就到处寻找

所以,简而言之,我认为命名空间数组可以消除歧义是正确的.我在这方面的第一次测试失败的原因是它只是完美匹配,我犯了错误,只使用程序集中的根n/s(换句话说,MyRoot而不是MyRoot.Controllers).

那么这个名称空间允许的是在两个不同的名称空间中有一个HomeController,并根据url或params不同地匹配它们.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有