【问题标题】:ASP.NET MVC Routing strategy for static content for each View每个视图的静态内容的 ASP.NET MVC 路由策略
【发布时间】:2011-01-04 16:47:12
【问题描述】:

我希望系统中的每个视图都有一些静态帮助内容。我正在考虑这样做的方式是为静态内容设置一个并行结构,并创建一个路由来重写这个 URL。例如:

/Controllers
/Help
  /Account
    /Login.htm
    /Create.htm
/Models
/Views
  /Account
    /Login.aspx
    /Create.aspx

...“/Account/Create/Help”的传入 URL 将提供“/Help/Account/Create.htm”。如何将其添加到 Global.asax:RegisterRoutes(RouteCollection)

或者,最好使用专用控制器和操作来处理这个问题 - 例如:

public class HelpController : Controller
{
    public ActionResult Help(string controller, string action)
    {
        return FileContentResult(GetContent("Help/" + controller + "/" + action));
    }
}

还是其他方式?


我最终添加了一条路线:

        routes.MapAsyncRoute(
                    "Help",
                    "{helpController}/{helpAction}/help",
                    new { controller = "Help", action = "Help" }
                    );

将帮助 URL 发送到:

    public ActionResult Help(string helpController, string helpAction)
    {
        return View(helpController + "_" + helpAction);
    }

...然后将帮助页面命名为“Account_Create.aspx”。这似乎是使用 MVC 处理此问题的最有效方法。

【问题讨论】:

    标签: asp.net-mvc url-rewriting url-routing


    【解决方案1】:

    我会先让它与专用控制器一起工作,因为这可能是最不痛苦的方法,并且该路线应该相对容易编写(尽管您需要确保包含 /Help 路线高于默认控制器路由,否则默认控制器路由很可能匹配。

    我不确定 asp.net 运行时是否可以提供 .htm 页面,所以我不知道您是否可以让系统按照您最初的设想工作。最好为帮助内容创建一个单独的子域或虚拟目录,并使用 html 帮助程序扩展方法从 html 帮助程序中可用的路由值生成帮助 url,因为这样您就不会向 asp 增加任何负载。 net 运行时通过要求它响应对静态内容的请求(并且您通过不需要 cookie 等来减少下载的内容)。

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2018-11-26
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多