Бритвой код между двойными цитатами
-
27-09-2019 - |
Вопрос
В шаблоне просмотра двигателя Razor я хочу сделать следующее: я хочу поставить некоторые код между двойными цитатами HTML атрибут. Отказ Беда в том, что кусок кода, который я хочу вставить, содержит некоторые двойные цитаты.
<a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a>
Вы можете легко увидеть, как все становится ужасно неправильно :-) Я знаю, что я могу рассчитать ссылку в переменной, а затем использовать ее, но я бы предпочел бы не:
@{ var action = Url.Action("Question", new { id = Model.Question.Id, page = page }); }
<a href="@action">@page</a>
Решение
Вам не нужно сбежать или что-нибудь с помощью бритвы. Бритва достаточно умна, чтобы знать, когда цитаты находятся в пределах атрибутов, потому что вы избегаете за пределами HTML, когда вы проанализируете его.
<a href="@Url.Action("Item",
new { id = Model.Item.Id, page = page })">@page</a>
Этот код будет работать нормально - просто убедитесь, что у вас есть @
Символ перед Url.Action
Позвоните, потому что если вы этого не сделаете, это не будет принято правильно, и я замечаю, что у вас его нет в своем вопросе.
Редактировать: удален; Как URL.action не является утверждением.
Другие советы
Может быть, я не понял ваш вопрос, в каком случае, пожалуйста, исправь меня, но вы не можете просто:
@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
Это может быть правильно:
href="@(action)"> @page