实现模块化asp.net mvc项目布局

时间:2015-12-22 08:30:26

标签: c# .net asp.net-mvc modularity convention

这里的模块化我的意思是像这样的基于特征的布局:

project's layout

(我读过有关地区的内容。我不是在问区域)

例如,使用 NancyFx 可以轻松实现此功能。至于 ASP.NET MVC ,我试图通过替换其视图搜索路径来扩展标准RazorViewEngine。结果视图被找到但是他们引用的静态内容无法加载( 404错误,并显示没有相应的控制器将请求与/assets/css/dashboard.css匹配)

我看过很多帖子,其中人们实现了自定义视图引擎,重新定义了CreateViewFindViewGetGeneralNameFrom方法等等。但我并没有完全了解 ASP.NET MVC约定

为了让控制器与其功能相关的代码(服务,视图,模型)位于同一个功能文件夹中,应该更改哪些约定?

我在询问我必须更改/替换/扩展的内部结构。

1 个答案:

答案 0 :(得分:0)

您不得将视图放在代码文件中。在MVC中,您应该有单独的文件夹:Models, Controllers, Views。 MVC引擎搜索Views文件夹中的视图。

在您的Views文件夹中,您需要有子文件夹AuthenticationDashboard。在每个子文件夹中,您将index页面和其他页面仅与此应用程序部分相关。例如,如果您有用于信息中心编辑的单独视图edit,请将其放在Views - Dashboard

同样适用于控制器'类。您有Controllers个文件夹和子文件夹Dashboard, Authentication。同样的规则适用于模特'类

对于所有.js个文件,您应该有Scripts个文件夹,对于所有css规则 - Content文件夹

您不需要自定义ViewEngine来呈现页面。只有在你有一些非通用的模板或一些业务需求时才需要它