Я хочу, чтобы каждое представление в моей системе имело статический справочный контент. То, как я думал об этом, было бы установить параллельную структуру для статического контента и создать маршрут для переписывания URL-адреса. Например:
/Controllers
/Help
/Account
/Login.htm
/Create.htm
/Models
/Views
/Account
/Login.aspx
/Create.aspx
... где входящий URL для "/Account/Create/Help
" будет обслуживать "/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.