【问题标题】:Implementing modular asp.net mvc project layout实现模块化asp.net mvc项目布局
【发布时间】:2015-12-22 08:30:25
【问题描述】:

这里的模块化是指像这样的基于功能的布局:

(我读过有关地区的信息。而且我不是在问地区)

例如,使用 NancyFx 这件事很容易实现。至于 ASP.NET MVC,我尝试通过替换其视图搜索路径来扩展标准 RazorViewEngine。由于找到了结果视图,但无法加载它们引用的静态内容(404 错误,消息指出没有相应的控制器来匹配与/assets/css/dashboard.css 的请求)

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    对于控制器的类也是如此。您有Controllers 文件夹和子文件夹Dashboard, Authentication。同样的规则也适用于模型的类

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

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

    【讨论】:

    • 这是标准的 MVC 架构。我的问题更多是关于如何打破它。我的问题不是关于框架需要什么开箱即用,而是关于框架内部。
    • 因为不够灵活。
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 2012-09-14
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多