Cercando di creare un percorso ASP.NET MVC predefinito con attributo.
-
27-10-2019 - |
Domanda
Ho appena iniziato a usare Attributo con la mia applicazione ASP.NET MVC3. Ho iniziato con -No- controller. (Nuova applicazione MVC3 vuota)
Ho quindi fatto un'area. (chiamato: Documentation
)
Ho quindi aggiunto un controller (chiamato: DocumentationController
)
Ho quindi fatto questo ..
[RouteArea("Documentation")]
public class DocumentationController : Controller
{
[GET("Index")]
public ActionResult Index()
{
return View();
}
}
E il seguente percorso, funziona: /documentation/index
Ma come posso fare questi due percorsi, funzionare?
1 - /
<- (percorso predefinito / nessun percorso specifico specificato) 2- /documentation
<- No 'INDICE' Sezione subroute aggiunta.
Questo può essere fatto con Attributo?
AGGIORNARE:
So come farlo con la struttura ASP.NET MVC3 predefinita, ecc. Quello che sto cercando di fare è capirlo invece tramite attributo.
Soluzione
Presumo che tu voglia che "/" e "/documentation" mappino su documentationcontroller.index, sì? In tal caso, fallo:
[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 po 'di spiegazione:
- Get ("indice") ha ordine = 1 per contrassegnarlo come percorso principale per l'azione. A causa del funzionamento della riflessione, non c'è modo di determinare l'ordine degli attributi su un'azione senza utilizzare la proprietà dell'ordine. Vedere qui
- Puoi avere più percorsi GET mappati su una singola azione. Vedere qui
- La proprietà IsabsoluteUrl consente di sovrascrivere i prefissi URL aggiunti dagli attributi RouteAREA e RoutePrefix. In modo che quel percorso finale corrisponda alle richieste di root. Vedere qui
Spero che sia di aiuto. Se la mia ipotesi iniziale di ciò che stai cercando di fare è errata, si prega di commentare.