在razor语法中嵌入javascript变量

在razor语法中嵌入javascript变量,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,我有一个这样的方法 function endcall_click(leadid) { document.location = '@Url.Action("index","dispo",new{id=leadid})/'; } 当然,它不起作用,因为它将“leadid”视为服务器端变量,但我想将传递的javascript变量注入该方法 我试着用铅包裹身份证,但没用 function endcall_click(leadid) { document.location = '@Url

我有一个这样的方法

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>"})/';
}
function endcall\u单击(引线ID){
document.location='@Url.Action(“index”,“dispo”,new{id=“leadid”})/”;
}

有什么想法吗?

您不能将javascript变量注入服务器上评估的脚本,因为在该脚本执行并生成输出时,该变量尚未存在。实现这一点的唯一方法是操作生成的字符串:

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

缺点是,这假设在javascript中操作路由,如果您决定在服务器上更改路由,代码可能会中断。

我最终找到了解决方案(*.vbhtml):


函数razorsyntax(){
/*双重的*/
@(MvcHtmlString.Create(“var szam=“&mydoublevariable&“;”))
警觉(szam);;
/*串*/
var str='@stringvariable';
警报(str);
}

你说得对。现在我想起来了。这是一个相当愚蠢的问题:)。。。有趣的是,我从一个服务器变量计算leadid,所以我可以简单地使用它。我发帖的时候是凌晨3点;)。谢谢你的帮助。
<script type="text/javascript">
function razorsyntax() {
    /* Double */
    @(MvcHtmlString.Create("var szam =" & mydoublevariable & ";"))
    alert(szam);

    /* String */
    var str = '@stringvariable';
    alert(str);
}
</script>