【问题标题】:Design Practices - Several Pages with ASP.NET MVC设计实践 - 使用 ASP.NET MVC 的几个页面
【发布时间】:2010-06-28 17:56:04
【问题描述】:

对于需要大量非模型相关页面的 MVC 类型网站,是否有特定的设计实践?我的意思是,为每个页面都做一个控制器动作似乎很愚蠢;然而与此同时,这似乎是现实地做到这一点并遵守标准的唯一方法。是否有任何文档或示例可用于此类事情?

当我谈到非模型页面时,我指的是那些只是展示的东西;您可以使用标准 HTML 网站布局的静态信息。但它必须与网站的其他需要模型和验证/等的部分混合在一起。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    为您的静态内容创建一个文件夹,并为这些页面添加一个忽略路由。这会导致这些页面直接传递到 IIS 以立即显示。

    routes.IgnoreRoute("StaticPages/{*path}"); 
    

    您也可以load static HTML content into an existing View。这样可以保留您在同一页面中处理动态内容的能力。

    【讨论】:

    • 但是如果需要,这些页面不能包含来自控制器的任何模型数据,对吧?
    • 所以假设我想对这些路径有一些友好的 url;有什么办法可以合并吗?
    • 您需要让路由引擎参与进来。但是,如果您提供静态页面,您可以编写一个简单的控制器或控制器/视图组合,从文件中返回 HTML,而不是实际的视图。
    【解决方案2】:

    我不认为对每个页面都进行操作听起来很愚蠢。这就是 MVC 的工作原理。

    您可以像 Robert Harvey 建议的那样忽略某些路由,但是您的静态页面上会有 *.html 扩展名,但内部页面上没有,并且您将无法使用 Url. 和 @987654322 @ 用于链接到 MVC 操作的辅助方法。

    我认为你应该顺其自然。

    【讨论】:

      【解决方案3】:

      对于常见的静态文件(例如帮助页面)提出了另一种替代方案,它更多地基于命名约定,但会在视图中的布局控制方面提供一定的灵活性:

      ASP.Net MVC Routing Strategy for Static Content

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多