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/ папка)

Спасибо!

Другие вопросы по тегам