встраивание переменной javascript в синтаксис бритвы - PullRequest
9 голосов
/ 02 декабря 2010

У меня есть метод, который выглядит следующим образом

function endcall_click(leadid) {
    document.location = '@Url.Action("index","dispo",new{id=leadid})/';
}

Конечно, он не работает, потому что он обрабатывает "leadid" как переменную на стороне сервера, но я хочу добавить переменную javascript, переданную в метод.

Я пытался добавить идентификатор, но это не сработало.

function endcall_click(leadid) {
    document.location = '@Url.Action("index","dispo",new{id="<text>leadid</text>"})/';
}

Есть идеи?

Ответы [ 2 ]

20 голосов
/ 02 декабря 2010

Вы не можете внедрить переменную javascript в сценарий, который оценивается на сервере, просто потому, что в данный момент этот сценарий выполняется и генерирует выходные данные, которые еще не были созданы. Единственный способ добиться этого - манипулировать получающейся строкой:

function endcall_click(leadid) {
    document.location = '@Url.Action("index", "dispo")/' + leadid;
}

Недостатком является то, что это предполагает манипулирование маршрутами в javascript, и если вы решите изменить их на сервере, код может сломаться.

1 голос
/ 04 сентября 2013

Я наконец нашел решение (* .vbhtml):

<script type="text/javascript">
function razorsyntax() {
    /* Double */
    @(MvcHtmlString.Create("var szam =" & mydoublevariable & ";"))
    alert(szam);

    /* String */
    var str = '@stringvariable';
    alert(str);
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...