Попытка создать маршрут ASP.NET MVC по умолчанию с помощью AttributeRouting - PullRequest
5 голосов
/ 19 февраля 2012

Я только начал использовать AttributeRouting с моим приложением ASP.NET MVC3. Я начал с -no- контроллеров вообще. (Новое пустое приложение MVC3)

Я тогда сделал область. (называется: Documentation)

Затем я добавил контроллер (называется: DocumentationController)

Я тогда сделал это ..

[RouteArea("Documentation")]
public class DocumentationController : Controller
{
    [GET("Index")]
    public ActionResult Index()
    {
        return View();
    }
}

И работает следующий маршрут: /documentation/index

но как я могу заставить эти два маршрута работать?

1 - / <- (маршрут по умолчанию / конкретный маршрут не указан) 2 - <code>/documentation <- раздел под индексом не добавлен. </p>

Можно ли это сделать с помощью AttributeRouting ?

UPDATE:

Я знаю, как это сделать с помощью структуры ASP.NET MVC3 по умолчанию и т. Д. Я пытаюсь выяснить это с помощью AttributeRouting.

1 Ответ

9 голосов
/ 20 февраля 2012

Полагаю, вы хотите, чтобы "/" и "/ Documentation" отображались в DocumentationController.Index, да? Если так, сделайте это:

[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 («Индекс») имеет Order = 1, чтобы пометить его как основной маршрут для действия. Из-за того, как работает отражение, невозможно определить порядок атрибутов в действии, не используя свойство Order. Смотрите здесь
  • Вы можете иметь несколько маршрутов получения, сопоставленных одному действию. Смотрите здесь
  • Свойство IsAbsoluteUrl позволяет переопределять префиксы URL-адресов, добавленные атрибутами RouteArea и RoutePrefix. Так что окончательный маршрут будет соответствовать корневым запросам. Смотри здесь

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...