Переменная Javascript в бритве ActionLink - PullRequest
12 голосов
/ 17 марта 2012
var boxIdValue = 233;
var result = title + '<br/>@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=233}, null)';

Когда я жестко кодирую boxId, тогда это работает. Но когда я пишу:

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

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

1 Ответ

22 голосов
/ 17 марта 2012

Посмотрите на этот связанный переполнение стека вопрос.

Причина, по которой это является проблемой, заключается в том, что метод 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;
...