12
var boxIdValue = 233; 
var result = title + '<br/>@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=233}, null)'; 

Когда я с жестким кодом boxId, тогда он работает. Но когда я пишу:Переменная Javascript в бритве ActionLink

var result = title + '<br/>@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=boxIdValue}, null)'; 

Это не так. Можно ли таким образом смешивать javascript var и бритву?

ответ

21

Обратите внимание на вопрос this related Stack Overflow.

Причина, по которой это вызов, заключается в том, что метод Razor выполняется на веб-сервере во время рендеринга, когда javascript выполняется в браузере клиента во время выполнения.

Я бы решить эту проблему, делая что-то вроде

var boxIdValue = 233; 
var link = '@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=-1}, null)' 
link = link.replace('-1', boxIdValue); 
var result = title + '<br />' + link; 
+0

это работает только, если вы не имеете второй параметр. Что-то вроде нового {boxId = -1, page = 1} будет сбой. Разделитель & будет кодироваться html как &, а параметр страницы не будет доступен в катионе. Для этого вам нужно использовать @ Html.Raw (Html.ActionLink ... –

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