我有一个看起来像这样的方法
function endcall_click(leadid) {
document.location = '@Url.Action("index","dispo",new{id=leadid})/';
}
当然它不起作用,因为它将“leadid”视为服务器端变量,但我想注入传递给方法的javascript变量。
我尝试过包含引导ID,但这不起作用。
function endcall_click(leadid) {
document.location = '@Url.Action("index","dispo",new{id="<text>leadid</text>"})/';
}
有什么想法吗?
答案 0 :(得分:20)
您不能将javascript变量注入到服务器上评估的脚本,因为此脚本执行并生成输出时此变量尚未存在。实现此目的的唯一方法是操纵结果字符串:
function endcall_click(leadid) {
document.location = '@Url.Action("index", "dispo")/' + leadid;
}
缺点是这假设在javascript中操纵路由,如果您决定在服务器上更改它们,代码可能会中断。
答案 1 :(得分:1)
我终于找到了解决方案(* .vbhtml):
<script type="text/javascript">
function razorsyntax() {
/* Double */
@(MvcHtmlString.Create("var szam =" & mydoublevariable & ";"))
alert(szam);
/* String */
var str = '@stringvariable';
alert(str);
}
</script>