DataView valor de codificación en ASP.NET MVC ActionLink
-
05-09-2019 - |
Pregunta
Estoy utilizando el Ajax Plantilla DataView Microsoft para enlazar los valores a una plantilla. Puedo hacer esto y funciona como era de esperar:
<h3>{{ID}}</h3>
<p>{{Address}}</p>
Sin embargo, yo estoy tratando de construir un enlace de acción que tiene el ID en ella.
<h2><%= Html.ActionLink(Html.AttributeEncode("{{Name}}"), "Index", "Restaurant", new { Id = Html.AttributeEncode("{{ID}}") }, null)%></h2>
El nombre se muestra como texto de enlace como yo quería, pero el enlace no incluye la identificación, en cambio, tiene% 7B% 7BID% 7D% 7D
¿Cómo puedo obtener el ID de ser debidamente analizada y se añade a la relación?
Solución 2
Por último tengo que trabajar, no sé si estaba siendo estúpida o si es la falta de documentación, pero aquí es cómo enlazar el valor del dataview a un enlace.
<h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>
Es la parte real ruta URL tiene que estar entre comillas simples y hay que usar sys:. Href href en lugar de
Otros consejos
Es posible que los soportes adicionales están lanzando fuera. Intente asignar los valores a las variables y el uso de las variables de la ActionLink. Se podría hacer la tarea en la parte superior de la vista y luego volver a utilizar a lo largo de la vista también. para no tener que volver a codificar todas partes.
<% var id = Html.AttributeEncode( "{{ID}}" );
var name = Html.AttributeEncode( "{{Name}}" );
%>
<h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
Su buena práctica incluir '<%= Url.Action("Index", "Restaurant")%>'
cuando se construye un URL manual para evitar problemas con el nombre de la aplicación y las direcciones URL en conflicto.