Codice del rasoio tra doppi apici
-
27-09-2019 - |
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>
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