Попытка создать маршрут по умолчанию ASP.NET MVC с атрибутом AttributeRouting

StackOverflow https://stackoverflow.com/questions/9346926

Вопрос

я только начал использовать Перенаправление атрибутов с помощью моего приложения 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.Таким образом, конечный маршрут будет соответствовать корневым запросам. Смотрите здесь

Надеюсь, это поможет.Если мое первоначальное предположение о том, что вы пытаетесь сделать, неверно, пожалуйста, прокомментируйте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top