valor dataview Encode em ASP.NET MVC ActionLink
-
05-09-2019 - |
Pergunta
Eu estou usando o Microsoft Ajax Template DataView para valores se ligam a um modelo. Eu posso fazer isso e ele funciona como você esperaria:
<h3>{{ID}}</h3>
<p>{{Address}}</p>
No entanto, estou tentando construir um link de ação que tem o ID nele.
<h2><%= Html.ActionLink(Html.AttributeEncode("{{Name}}"), "Index", "Restaurant", new { Id = Html.AttributeEncode("{{ID}}") }, null)%></h2>
O nome é mostrado como o texto do link como eu queria, mas o link não inclui o ID, em vez disso, tem% 7B% 7BID% 7D% 7D
Como eu poderia obter o ID de ser devidamente analisado e adicionado ao link?
Solução 2
Finalmente comecei a trabalhar, eu não sei se eu estava sendo estúpido ou se é a falta de documentação, mas aqui é como ligar o valor dataview a um link.
<h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>
As necessidades reais rota url peça a ser entre aspas simples e você precisa usar sys:. Href em vez de href
Outras dicas
É possível que os suportes extras são jogá-lo fora. Tente atribuir os valores às variáveis ??e usando as variáveis ??do ActionLink. Você poderia fazer a tarefa no topo da vista e, em seguida, reutilizá-los em toda a visão também. para não ter que re-codificá-los em todos os lugares.
<% var id = Html.AttributeEncode( "{{ID}}" );
var name = Html.AttributeEncode( "{{Name}}" );
%>
<h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
A sua boa prática incluir '<%= Url.Action("Index", "Restaurant")%>'
ao construir um url manual para problemas evitar com o nome do aplicativo e conflitantes urls.