2012-01-03 3 views
5

Ho apprezzato molto l'idea di utilizzare gli attributi per controllare ASP.NET MVC routing, così invece di registrare un nuovo percorso e inquinare l'Global.asax.cs o * AreaRegistration.cs, ho qualcosa di simile:Quale framework ASP.NET MVC Routing scegliere?

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

Vedo l'ottima risposta: ASP.NET MVC Routing Via Method Attributes, ma vorrei ricevere alcuni consigli "reali".

  1. Quale framework di routing raccomanderesti?
  2. Quanto è facile avviare e modificare il codice esistente per l'utilizzo?
  3. È disponibile su NuGet?

.. e vale davvero la pena utilizzarlo, può essere trattato come migliore (forse buono?) Pratica?

risposta

4

Ho provato il routing tramite gli attributi del metodo mentre fa. Non userei alcun framework per il routing.

Penso che sia meglio seguire semplicemente lo schema "standard".

Inoltre, l'unità che verificava individualmente ciascun percorso mi ha aiutato parecchio
(ho persino scritto un test che fallisce nel caso in cui abbia perso qualsiasi percorso).

+0

Puoi condividere questo test? – sashaeve

+1

@sashaeve non può dire che è bello, ma qui vai: https://gist.github.com/1555885 –

0

La mia preferenza personale è mantenere la configurazione del routing centralizzata (la tengo sul Global.asax).

Tuttavia, qualunque metodo si usi, assicurarsi di seguire uno standard. Immagino che il problema che vedo con il routing degli attributi sia che consente agli sviluppatori di diventare "creativi" in un modo che diventa confuso e difficile da mantenere e capire.

Avendo tutto il routing in una posizione centralizzata, consente di trovare e comprendere rapidamente le regole di routing applicate.

2
  1. Suggerirei AttributeRouting, l'ho scritto e lo uso tutti i giorni.
  2. Per iniziare, decorare semplicemente un'azione con un attributo GET. Nuget fa il resto.
  3. Nuget si.

Mi piacciono gli URL.

Mi piace vederli proprio sopra il codice a cui mappano.

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

Quando si esegue questa operazione, è possibile Ctrl + F "alcuni/url" e andare a destra il metodo di azione, che è piuttosto comodo. Se modifichi il nome dell'azione o lo spostassi da un'altra parte, il percorso rimane con esso e rimane invariato.

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

Se si desidera modificare gli URL e ancora rispondere alla URL legacy, è sufficiente aggiungere un altro attributo di sopra del vecchio e segnare come quello nuovo impostando Order = 1:

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

Se si desidera ottenere riposante, e andare fino in fondo con override del metodo HTTP e il supporto GET/POST/PUT/DELETE, basta andare a destra avanti con la vostra parte malvagia:

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

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

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

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

io uso questo lib tutto il tempo, e fatto in modo che io possa d. L'ho utilizzato per un anno e mezzo e non ho mai avuto problemi con il routing o la ricerca di dove andare o mi sono chiesto perché il percorso A è stato abbinato invece del percorso B. È super facile da usare, ha diverse opzioni di configurazione, e rende il routing 100x più semplice (secondo me).

Qualunque cosa scegliate, consiglio assolutamente di provare il routing basato su attributi, sia AR che altro. Potrebbe non essere il tè della tazza di tutti, ma lo adoro assolutamente.