2012-02-02 10 views
6

In una risposta SO a una domanda diversa, un utente ha dichiarato che consentiva di evitare i valori di instradamento hard-coding in un tag link html, ma ciò non è realmente valido poiché è necessario inserire il controller, l'azione, l'area, ecc. come stringhe quindi stai ancora hard-coding i valori del percorso.Quali sono i vantaggi dell'utilizzo di helper MVC HTML come ActionLink, BeginForm, TextBox, ecc. Anziché i tag HTML nativi?

Come è questo:

@Html.ActionLink(linkText: "MyLink", actionName: "MyAction", controllerName: "MyController", new { id = @myId }, new { area = "SomeArea"}) 

meglio di questo:

<a href='/SomeArea/MyController/MyAction/myId'>MyLink</a> 

risposta

3

La tua osservazione è vero solo se (a) che si sta utilizzando rigorosamente il formato predefinito di routing e (b) se il l'applicazione verrà sempre installata nella radice del sito. Se non si fa il primo (ad esempio, creare una scorciatoia/guida che va al comando Home e all'azione della Guida e successivamente modificarla introducendo un controller della Guida con più azioni, sarà quindi necessario aggiornare tutte le Ancora una migliore alternativa utilizza l'helper RouteLink con il nome della rotta e, facoltativamente, altri parametri

Per quanto riguarda quest'ultima, generalmente utilizzo un singolo server per la maggior parte delle distribuzioni di staging e l'applicazione NON si trova nella radice del sito, ma in una sottodirectory.La distribuzione della produzione è mista, ma molte applicazioni vengono installate nella root del sito.Utilizzo degli helper mi consente di ignorare la differenza durante lo sviluppo poiché l'helper costruisce correttamente l'url relativo al sito corrente in tutti i casi, è così utile che lo uso anche per script, file CSS, immagini, ecc. tramite UrlHelper Assicuriamoci che qualsiasi percorso specificato per quelli non si interrompa tra la gestione temporanea e la produzione.

+0

Tutti i punti positivi. Dal momento che le mie applicazioni risiedono sempre nel proprio sito e utilizzano percorsi relativi alla radice, non ho nemmeno considerato gli altri casi d'uso. Dopo aver guardato più vicino l'helper RouteLink, sembra essere più adatto per la maggior parte dei casi. – jpshook

0

Sembra che ci sia poco da sfruttare nell'utilizzo dell'helper, a patto di apportare una modifica: aggiungere una tilda in modo che il router risolva automaticamente l'indirizzo nella posizione corretta.

<a href='~/SomeArea/MyController/MyAction/myId'>MyLink</a> 
Problemi correlati