【发布时间】: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