Codifica valore dataview in ASP.NET MVC ActionLink
-
05-09-2019 - |
Domanda
Sto usando il modello Ajax DataView Microsoft di legare i valori a un modello. Posso fare questo e funziona come ci si aspetta:
<h3>{{ID}}</h3>
<p>{{Address}}</p>
Comunque sto cercando di costruire un legame azione che ha l'ID in esso.
<h2><%= Html.ActionLink(Html.AttributeEncode("{{Name}}"), "Index", "Restaurant", new { Id = Html.AttributeEncode("{{ID}}") }, null)%></h2>
Il nome viene indicato come il testo del link come avrei voluto, ma il link non includere l'ID, invece ha% 7B% 7BID% 7D% 7D
Come faccio a ottenere l'ID di essere adeguatamente analizzato e aggiunto il collegamento?
Soluzione 2
finalmente riusciti a farlo funzionare, non so se mi veniva stupido o se è la mancanza di documentazione, ma qui è come associare il valore dataview ad un collegamento.
<h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>
La parte reale percorso URL deve essere tra virgolette singole ed è necessario utilizzare sys:. Href invece di href
Altri suggerimenti
E 'possibile che le staffe in più stanno gettando fuori. Provate ad assegnare i valori alle variabili e utilizzare le variabili nel ActionLink. Si potrebbe fare l'assegnazione in cima la vista e poi riutilizzarli in tutta la vista pure. per evitare di dover ri-codificare ovunque.
<% var id = Html.AttributeEncode( "{{ID}}" );
var name = Html.AttributeEncode( "{{Name}}" );
%>
<h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
La sua buona pratica includere '<%= Url.Action("Index", "Restaurant")%>'
quando si costruisce un URL manuale per evitare problemi con il nome dell'applicazione e gli URL contrastanti.