Код за бръснене между двойни кавички

В шаблон на Razor View Engine искам да направя следното: Искам да поставя някакъв код между двойните кавички на html атрибут. Проблемът е, че самата част от кода, която искам да вмъкна, съдържа няколко двойни кавички.

<a href="/bgUrl.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="/bg@action">@page</a>                                        

person Thomas    schedule 22.11.2010    source източник


Отговори (3)


Не е нужно да бягате или нещо друго, като използвате Razor. Razor е достатъчно умен, за да знае кога кавичките са в атрибутите, защото излизате извън html, когато го анализирате.

<a href="/[email protected]("Item", 
       new { id = Model.Item.Id, page = page })">@page</a>

Този код ще работи добре - Просто се уверете, че имате символа @ пред извикването Url.Action, защото ако не го направите, той няма да бъде анализиран правилно и забелязвам, че го нямате във вашия въпрос.

Редактиране: премахнато ; тъй като Url.Action не е изявление.

person Buildstarted    schedule 22.11.2010
comment
Една забележка: ако имате нужда от постоянен префикс във вашия атрибут, комбиниран с израза на Razor, трябва да добавите скоби след знака @, в противен случай Razor го третира като имейл адрес. Пример: id="prefix@(Model.Id)" - person Igor Brejc; 17.12.2011

Може би не съм разбрал въпроса ви, в който случай, моля, поправете ме, но не можете ли просто:

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
person Darin Dimitrov    schedule 22.11.2010

Това може да е правилно:

href="/bg@(action)"> @page 
person D S    schedule 08.12.2013
comment
Жалко, че не гласувахте - решението на моя проблем беше да добавя @(xxx) вместо без () - и предполагам, че това е, което казвахте - поставете "действието" в () - което реши проблема ми точно, @xxx не работи вътре в - person Traderhut Games; 10.06.2015