2010-11-22 15 views
6

en una plantilla de la maquinilla de afeitar Vista del motor, quiero hacer lo siguiente: Quiero poner un poco de código entre las comillas dobles de un atributo HTML . El problema es que la pieza de código que quiero insertar contiene algunas comillas dobles.código de la maquinilla de afeitar entre comillas dobles

<a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a> 

Se puede ver fácilmente cómo salen muy mal :-) Sé que puedo calcular el enlace en una variable y luego usarlo cosas, pero yo preferiría no hacerlo:

@{ var action = Url.Action("Question", new { id = Model.Question.Id, page = page }); }     
<a href="@action">@page</a>           

Respuesta

17

Usted don No necesitas escapar ni nada con Razor. Razor es lo suficientemente inteligente como para saber cuándo las comillas están dentro de los atributos porque estás escapando fuera de html cuando lo analizas.

<a href="@Url.Action("Item", 
     new { id = Model.Item.Id, page = page })">@page</a> 

Ese código no tendrán ningún problema - sólo asegúrese de que tiene el símbolo @ frente a la llamada Url.Action porque si no lo hace no va a ser analizado adecuadamente y noto que no lo tiene en tu pregunta.

Editar: eliminado; como Url.Action no es una declaración.

+4

Una nota: si usted necesita una prefijo constante en su atributo combinado con la expresión Razor, necesita agregar paréntesis después de @ char, de lo contrario Razor lo trata como una dirección de correo electrónico. Ejemplo: 'id =" prefix @ (Model.Id) "' –

8

Tal vez yo no entendía su pregunta en cuyo caso, por favor, corríjanme, pero no puede simplemente:

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page }) 
1

esto puede ser correcto:

href="@(action)"> @page 
+0

Es triste que hayas votado - la solución a mi problema fue agregar @ (xxx) en vez de sin() 's - y supongo que eso es lo que estaban diciendo - poner las cosas de 'acción' dentro() - que resolvió mi problema exactamente, @xxx no funcionó dentro de "" –

Cuestiones relacionadas