Попытка создать маршрут по умолчанию ASP.NET MVC с атрибутом AttributeRouting
-
27-10-2019 - |
Вопрос
я только начал использовать Перенаправление атрибутов с помощью моего приложения ASP.NET MVC3.Я начинал вообще без контроллеров.(Новое Пустое приложение MVC3)
Затем я создал область.(вызывается: Documentation
)
Затем я добавил контроллер (называемый: DocumentationController
)
Затем я сделал это..
[RouteArea("Documentation")]
public class DocumentationController : Controller
{
[GET("Index")]
public ActionResult Index()
{
return View();
}
}
И следующий маршрут работает: /documentation/index
но как я могу заставить эти два маршрута работать?
1 - /
<-- (маршрут по умолчанию / конкретный маршрут не указан)
2 - /documentation
<-- не добавлен раздел подпрограммы "индекс".
Можно ли это сделать с помощью Перенаправление атрибутов?
Обновить:
Я знаю, как сделать это с помощью ASP.NET структура MVC3, и т. д.То, что я пытаюсь сделать, это выяснить это с помощью AttributeRouting вместо этого.
Решение
Я предполагаю, что вы хотите, чтобы "/" и "/documentation" были сопоставлены с DocumentationController.Индекс, да?Если да, сделайте это:
[RouteArea("Documentation")]
public class DocumentationController : Controller
{
[GET("Index", Order = 1)] // will handle "/documentation/index"
[GET("")] // will handle "/documentation"
[GET("", IsAbsoluteUrl = true)] // will handle "/"
public ActionResult Index()
{
return View();
}
}
Небольшое объяснение:
- GET("Index") имеет Order = 1, чтобы пометить его как основной маршрут для действия.Из-за того, как работает отражение, невозможно определить порядок атрибутов в действии без использования свойства Order. Смотрите здесь
- У вас может быть несколько маршрутов get, сопоставленных одному действию. Смотрите здесь
- Свойство IsAbsoluteUrl позволяет переопределять префиксы URL, добавленные атрибутами RouteArea и RoutePrefix.Таким образом, конечный маршрут будет соответствовать корневым запросам. Смотрите здесь
Надеюсь, это поможет.Если мое первоначальное предположение о том, что вы пытаетесь сделать, неверно, пожалуйста, прокомментируйте.