Código de barbear entre aspas duplas
-
27-09-2019 - |
Pergunta
Em um modelo de mecanismo de visualização de navalha, quero fazer o seguinte: quero colocar alguns código entre as citações duplas de um html atributo. O problema é que o pedaço de código que quero inserir contém algumas cotações duplas.
<a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a>
Você pode ver facilmente como as coisas ficam terrivelmente erradas :-) Eu sei que posso calcular o link em uma variável e depois usá-lo, mas eu prefiro não:
@{ var action = Url.Action("Question", new { id = Model.Question.Id, page = page }); }
<a href="@action">@page</a>
Solução
Você não precisa escapar ou qualquer coisa usando Razor. A Razor é inteligente o suficiente para saber quando as cotações estão dentro dos atributos porque você está escapando para fora do HTML quando a analisa.
<a href="@Url.Action("Item",
new { id = Model.Item.Id, page = page })">@page</a>
Esse código funcionará bem - apenas verifique se você tem o @
símbolo em frente ao Url.Action
Ligue porque, se não o fizer, não será analisado corretamente e noto que você não a tem em sua pergunta.
Editar: removido; Como o URL.Action não é uma declaração.
Outras dicas
Talvez eu não tenha entendido sua pergunta em que caso, por favor me corrija, mas você não pode simplesmente:
@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
Isso pode estar correto:
href="@(action)"> @page