Код бритвы между двойными кавычками - PullRequest
7 голосов
/ 22 ноября 2010

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

Ответы [ 3 ]

19 голосов
/ 22 ноября 2010

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

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

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

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

8 голосов
/ 23 ноября 2010

Возможно, я не понял ваш вопрос, в таком случае, пожалуйста, поправьте меня, но вы не можете просто:

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
1 голос
/ 08 декабря 2013

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

href="@(action)"> @page 
...