MVC5 использовать один ActionResult для нескольких страниц?
Я искал дольше, чем хотел бы, чтобы найти решение, но не могу найти его.
На моем сайте сотни статических страниц.
Очень утомительно добавлять один ActionResult для каждого просмотра.
Тем более, что я должен прекратить отладку для редактирования кода.
Так, например, если я хочу добавить страницу About, я должен добавить...
public ActionResult About()
{
return View();
}
Мне кажется, что я должен быть в состоянии сделать это динамическим и передать вид через маршрут.
Я имею в виду, если у меня есть файл с именем About.cshtml, тогда зачем мне добавлять собственный ActionResult.
Я бы предпочел сделать что-то подобное, но это не работает.
public ActionResult Index(_ViewName)
{
return View(_ViewName);
}
Возможно ли иметь общий ActionResult и передать имя представления через URL-маршрут?
1 ответ
С вашим маршрутом по умолчанию вы можете редактировать index
метод, как показано ниже, и сделать это.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
public ActionResult Index(string id)
{
return View(id);
}
Что вам нужно сделать, это добавить представление в соответствии с именем, которое вы анализируете.
пример
/home/index/about
/home/index/contact
(About.cshtml
а также Contact.cshtml
взгляды должны быть в /Views/Home/
папка)
Спасибо!