2010-11-22 7 views
6

В шаблоне Engine Razor View я хочу сделать следующее: Я хочу поставить код между двойными кавычками атрибута 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>           

ответ

17

Вы дон Не нужно бежать или что-то использовать с помощью Razor. Razor достаточно умен, чтобы знать, когда кавычки находятся в атрибутах, потому что вы выходите за пределы html при его анализе.

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

Этот код будет работать нормально - Просто убедитесь, что у вас есть @ символ перед Url.Action вызова, потому что если вы этого не сделаете это не будет разобран правильно, и я заметил, что вы не имеете его в ваш вопрос.

Редактировать: удалить; поскольку Url.Action не является заявлением.

+4

Одно примечание: если вам нужен постоянный префикс в вашем атрибуте в сочетании с выражением Razor, вам нужно добавить скобки после @ char, иначе Razor рассматривает его как адрес электронной почты. Пример: `id =" prefix @ (Model.Id) "` – 2011-12-17 18:40:43

8

Может быть, я не понял ваш вопрос в этом случае, пожалуйста, поправьте меня, но вы не можете просто:

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

Это может быть правильным:

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

Печально, что вы проголосовали - решение моей проблемы состояло в том, чтобы добавить @ (xxx) вместо без(), и я полагаю, это то, что вы говорили: «Положите« действие »внутри(), который решил мою проблему точно, @xxx не работал внутри« " – 2015-06-10 16:29:59

Смежные вопросы