Какой ASP.NET MVC Routing Framework выбрать? - PullRequest
5 голосов
/ 03 января 2012

Мне очень понравилась идея использовать атрибуты для управления маршрутизацией ASP.NET MVC, поэтому вместо регистрации нового маршрута и polute Global.asax.cs или * AreaRegistration.cs у меня есть что-то вроде этого:

[Route("users/{userrId}/pages/{pageId}"]
public ActionResult Some(int userId, int pageId) { }

Я вижу отличный ответ: Маршрутизация ASP.NET MVC через атрибуты метода , но я хотел бы получить некоторые рекомендации "реального использования".

  1. Какую инфраструктуру маршрутизации вы бы порекомендовали?
  2. Как легко запустить и изменить существующий код для использования?
  3. Это доступно на NuGet?

.. и действительно ли это стоит использовать, можно ли это рассматривать как лучшую (возможно, хорошую?) Практику?

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Я пробовал маршрутизацию через атрибуты метода некоторое время назад.Я бы не использовал фреймворк для маршрутизации.

Я думаю, что лучше просто следовать "стандартной" схеме.

Также - модульное тестирование каждого маршрута в отдельности мне очень помогло
(ядаже написал тест, который не проходит в случае, если я пропустил какой-либо маршрут).

2 голосов
/ 06 февраля 2012
  1. Я бы порекомендовал AttributeRouting , я написал это и использую каждый день.
  2. Для запуска просто украсьте действие атрибутом GET. Nuget сделает все остальное.
  3. Нюгет да.

Мне нравятся URL.

Мне нравится видеть их прямо над кодом, на который они отображаются.

[GET("some/url")]
public ActionResult HotDamn()

Когда вы сделаете это, вы можете нажать Ctrl + F "some / url" и перейти к своему методу действия, что очень удобно. Если вы измените название своего действия или переместите его в другое место, маршрут останется с ним и не изменится.

[GET("some/url"]
public ActionResult HotDarnCauseCussingIsBad()

Если вы хотите изменить URL-адреса и по-прежнему отвечать на устаревший URL-адрес, просто добавьте другой атрибут поверх старого и пометьте его как новый, установив Order = 1:

[GET("better/url", Order = 1)]
[GET("some/url")] // order defaults to int.MaxValue
public ActionResult BetterMethodName()

Если вы хотите успокоиться и пройти весь путь с переопределениями методов HTTP и поддержкой GET / POST / PUT / DELETE, вы просто продолжаете свое плохое «я»:

[GET("")]
public ActionResult Index()

[POST("")]
public ActionResult Create()

[PUT("{id}")]
public ActionResult Update()

[DELETE("{id}")]
public ActionResult Delete()

Я все время использую эту библиотеку и сделал так, чтобы мог. Я использую его в течение полутора лет, и у меня никогда не возникало проблем с маршрутизацией или поиском того, куда идут дела, или удивляюсь, почему маршрут A был выбран вместо маршрута B. Он очень прост в использовании, имеет довольно много вариантов конфигурации делает маршрутизацию в 100 раз проще (на мой взгляд).

Что бы вы ни выбрали, я определенно рекомендую хотя бы попробовать маршрутизацию на основе атрибутов, будь то AR или что-то еще. Может быть, не у всех чашечка чая, но мне это очень нравится.

0 голосов
/ 03 января 2012

Мое личное предпочтение - сохранять конфигурацию маршрутизации централизованной (я храню ее в Global.asax).

Однако, какой бы метод вы ни использовали, убедитесь, что вы следуете стандарту. Я предполагаю, что проблема, с которой я сталкиваюсь при маршрутизации атрибутов, заключается в том, что она позволяет разработчикам проявить «креативность» таким образом, что это становится запутанным и трудным для поддержки и понимания.

Располагая всей маршрутизацией в централизованном месте, вы сможете быстро найти и понять применяемые правила маршрутизации.

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