2015-05-13 49 views
-2

我对MVC部分视图的搜索顺序感到困惑。MVC部分视图搜索顺序?

例如,从d我的网站网址:\ mysite的是: http://localhost:8039/Admin/Contents/Create/FundswireArticle

没有实体文件夹,名为d:\ mysite的\ Admin或d:\ mysite的\管理\目录(它们是由路由控制到其他地方)。

从文件监视器,我实际上看到我的应用程序试图找到 d:\ mysite \ Admin和d:\ mysite \ Admin,它找不到它(因为它不在那里),那么它去使用路由。

这是MVC的正常行为(我在.net 4.5下运行)?

+1

你的问题不清楚,你能详细说明一下吗? – ramiramilu

+0

什么部分不清楚?假设我访问http:// localhost:8039/Admin/Contents/Create/FundswireArticle。我没有一个名为Admin的物理文件夹,而是路由表将路由流量到/ Jerry/Test。从sysinternal文件监视器,我可以看到IIS首先尝试在本地硬盘上找到Admin文件夹和Admin/Create Folder。然后它会去路由表去真正的地方。 – daxu

+0

您的网站内容在哪里?什么是你的路由配置?你有没有创建任何虚拟目录? – ramiramilu

回答

0

看起来这是MVC现在的正常行为。我简化了测试代码:

routes.MapRoute(
      name: "Test", 
      url: "{Test}/{Index}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

URL访问是:http://localhost:6666/Test/Index 你可以看到路由将路由流量到家庭控制器。

从文件监视,我看到了这些:

请求文件d:\ testspeed \测试

请求文件d:\ testspeed \测试\ Web.config文件

请求文件d:\ testspeed \测试\指数

请求文件d:\ testspeed \测试\首页\ Web.config文件

所有请求失败,因为没有测试文件夹。 然后它读取bin文件夹中的所有dll,web donfigs,然后加载 主文件夹和所有javascript。

此演示在契约MVC将搜索具有相同名称的网址中提到的物理文件夹。