Essayer de créer un défaut ASP.NET MVC Route avec AttributeRouting
-
27-10-2019 - |
Question
Je viens de commencer à utiliser AttributeRouting avec mon application ASP.NET MVC3. J'ai commencé avec les contrôleurs -no- du tout. (Nouvelle application vide de MVC3)
Je me suis alors fait une région. (Appelé: Documentation
)
I On ajoute ensuite une unité de commande (appelé: DocumentationController
)
Je l'ai alors fait cela ..
[RouteArea("Documentation")]
public class DocumentationController : Controller
{
[GET("Index")]
public ActionResult Index()
{
return View();
}
}
Et l'itinéraire suivant, travaux: /documentation/index
mais comment puis-je faire ces deux routes, le travail?
1 - /
<- (route par défaut / non itinéraire spécifié)
2 - /documentation
<-. Pas de section d'itinéraires 'index' ajouté
Peut-on faire avec AttributeRouting ?
MISE À JOUR:
Je sais comment faire avec la structure par défaut ASP.NET MVC3, etc. Ce que je suis en train de faire est de comprendre cela par AttributeRouting à la place.
La solution
Je suppose que vous voulez que le « / » et « / documentation » à la carte à DocumentationController.Index, oui? Si oui, faites ceci:
[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();
}
}
Un peu d'explication:
- GET ( « Index ») a ordre = 1 pour le marquer comme la principale voie pour l'action. En raison de la façon dont fonctionne la réflexion, il n'y a aucun moyen de déterminer l'ordre des attributs sur une action sans utiliser la propriété de la commande. Voir ici
- Vous pouvez avoir plusieurs itinéraires cartographiés à une get action unique. Voir ici
- La propriété IsAbsoluteUrl vous permet de remplacer les préfixes d'URL ajoutés par les attributs RouteArea et RoutePrefix. Donc, cette route finale correspondra à des demandes de racine. Voir ici
Hope this helps. Si mon hypothèse initiale de ce que vous essayez de faire est incorrecte, s'il vous plaît commentaire.