Вы можете создать метод совместного действия, который принимает параметр viewName
:
public ActionResult Show(string viewName)
{
return View(viewName);
}
Затем вы можете направить эти имена к этому действию:
routes.MapRoute(
"Simple Content",
"/{viewName}",
new { controller = "Something", action = "Show" },
new { viewName = "Research|Facility|Contact" }
);
Требуется ограничение viewName
, чтобы этот маршрут не совпадал с произвольными URL-адресами.
Остерегайтесь, что это уязвимость раскрытия информации; злоумышленник может запросить /ControllerName/Show?viewName=~/Views/Secret/View
.
Если у вас есть конфиденциальные представления, в которых не используются модели, вы должны проверить viewName
в действии.
Для этого вы можете использовать перечисление, как в ответе dknaack .