Domanda

In un modello di rasoio View Engine, voglio fare quanto segue: voglio mettere un po ' codice tra le virgolette di un html di attributo . Il guaio è che il pezzo di codice che voglio inserto contiene alcuni doppi apici per sé.

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

Si può facilmente vedere come le cose girano terribilmente male :-) So di poter calcolare l'anello di una variabile e poi lo uso, ma preferisco non

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

Soluzione

Non c'è bisogno di fuggire o qualcosa usando Razor. Razor è abbastanza intelligente per sapere quando le citazioni si trovano gli attributi, perché si sta sfuggendo al di fuori di HTML quando si analizza esso.

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

Che il codice funziona bene - Basta fare in modo di avere il simbolo @ di fronte alla chiamata Url.Action perché se non lo fai non verrà analizzato correttamente e Ho notato che non ce l'hai nella tua domanda <. / p>

Edit: rimosso; come Url.Action non è una dichiarazione.

Altri suggerimenti

Forse non ho capito la tua domanda, nel qual caso si prega di correggere me, ma non si può semplicemente:

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

Questo può essere corretto:

href="@(action)"> @page 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top