在razor语法中嵌入javascript变量

Ema*_*mad 9 javascript asp.net-mvc razor

我有一个看起来像这样的方法

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

当然它不起作用,因为它将"leadid"视为服务器端变量,但我想注入传递给方法的javascript变量.

我试过包装引导ID但是没有用.

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

有任何想法吗?

Dar*_*rov 20

您不能将javascript变量注入到在服务器上评估的脚本,因为此脚本执行并生成输出时此变量尚未存在.实现此目的的唯一方法是操纵结果字符串:

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

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

  • 你是对的.现在我考虑一下.这是一个非常愚蠢的问题:)...有趣的是我从服务器变量计算leadid,所以我可以简单地使用它.我发布的时间是凌晨3点;).谢谢你的帮助. (3认同)