ASP.NET MVC中的自定义文件夹结构5

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC中的自定义文件夹结构5前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图确定在ASP.NET MVC 5中是否可能(或实用)实现Bob叔叔尖叫架构,而不是使用默认文件夹结构.

这是一个链接到尖叫建筑:http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html的描述

假设的文件夹结构将如下所示:

>客户

>控制器

> CustomerController.cs

>模型

> Customer.cs

>视图

> Index.cshtml
> Details.cshtml
> Update.cshtml

>员工

>控制器

> EmployeesController.cs

>模型

> Employee.cs

>视图

> Index.cshtml
> Details.cshtml
> Update.cshtml

>共享

>视图

> _Layout.cshtml
> Error.cshtml

> _ViewStart.cshtml
> Web.config

相应的URL路由将如下所示:

> http://www.example.com/customers/ =>客户指数
> http://www.example.com/customers/details/1 =>顾客信息
> http://www.example.com/customers/update/1 =>客户更新
> http://www.example.com/employees/ =>员工指数
> http://www.example.com/employees/details/1 =>员工细节
> http://www.example.com/employees/update/1 =>员工更新

我创建了一个自定义的RazorViewEngine,并添加了相应的视图位置格式(例如“〜/ {1} / Views / {0} .cshtml”)和部分视图位置格式(例如“〜/ Shared / Views / {0}”. CSHTML“).我还将共享的_ViewStart.cshtml移动到根目录,并将Views / Shared文件夹的web.config与根级别的web.config合并,以避免在所有View文件夹中复制这两个文件.

一切都很好,但是,如果我尝试导航到索引页(例如http://www.example.com/employees/),我得到一个403.14错误(禁止).所有其他路线(包括http://www.example.com/employees/index)工作正常.

我的猜测是,IIS显式阻止了控制器的索引方法的路由,因为该URL与文件系统中的文件夹重合,默认情况下禁用目录浏览.但是,如果我启用目录浏览,它实际上需要我到实际的目录列表,而不是路由到控制器的索引方法.

我可以将“客户”和“员工”文件夹移动到子文件夹中(即将其移出根目录),并且一切正常,但我想尝试将这些文件夹保留在顶层(根据尖叫架构指南).

有没有人有解决这个问题的解决方案?

请注意,MVC区域不是我正在寻找的解决方案,因为它不允许上述文件夹结构(即顶级文件夹以高级用例命名,并且直接包含在Views文件夹中,而不是在子文件夹).

解决方法

我打赌你是正确的IIS然后.如果您有两条路径映射到同一资源,则首先在IIS侧检查物理路径.

我正在挖掘路线配置,并在RouteCollection上找到属性RouteExistingFiles,并认为这可以工作.

我将值设置为true,并在本地测试项目中的空文件夹,重定向到Home / Index的路由,并导航到localhost:xxx / MyFolder.它工作正常

那么所有你需要做的就是将此属性设置为true,以便首先选择Asp.net路由而不是物理路由.

猜你在找的asp.Net相关文章