Есть ли способ добавить четвертый маркер маршрута к существующей области, контроллеру, маршрутам действий?
например, мне нужна маршрутизация вроде
fourthRouteValue/Area/Controller/Action
Приложение, которое мы пытаемся создать, настолько велико, что без него будет практически невозможно все правильно оформить.
Заранее спасибо.
Текущие маршруты ASP NET Core 2.0 используют Площадь, Контроллер и Действие в качестве маркеров маршрута. Но наше приложение настолько велико, что четвертый токен будет очень большим подспорьем. И есть слишком много действий, чтобы обойти их и дать маршруты в соответствии с документом.
Итак, для тех, кто придет сюда позже, вот как я это исправил.
Я создал RouteValueAttribute
следующим образом
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RegionAttribute : RouteValueAttribute
{
public RegionAttribute(string regionName) : base("Region", regionName)
{
}
}
Затем я могу использовать это аналогично тому, как вы указываете область
[Region("Region")]
[Area("Area")]
public class TestController : Controller
{
public IActionResult Index()
{
return View();
}
}
и в startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(
name: "main_route_region",
template: "{region:exists}/{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
Теперь действие будет доступно с ~/Region/Area/Test/Index
.
Мне сложно понять приведенный выше пример маршрутизации. Однако для asp.net mvc можно создавать собственные шаблоны маршрутов, которые можно повторно использовать в своих контроллерах. Проверьте это docs.microsoft.com/en-us/aspnet/core/mvc/controllers/…