有人可以解释一下为什么这个脚本无效吗?
<script type="text/javascript">
function destroy(ID) {
if (confirm("Deleting is a very bad thing! Sure?"))
{
location.href='@Url.Action("SomeAction", new { id = ID })'
}
}
错误是:名称&#39; ID&#39;在当前上下文中不存在,并在此处发生new { id = ID }
如果我只是以这种方式替换ID:new { id = 3 }
它工作正常。有什么问题?
答案 0 :(得分:4)
您将服务器代码与客户端代码混合在一起。
ID
是一个javascript变量 - 仅存在于客户端上。
@Url.Action("SomeAction",
服务器代码,仅在服务器上存在。
你不能混合它们!
您可以这样做:
function destroy(ID) {
if (confirm("Deleting is a very bad thing! Sure?")){
var url ='@Url.Action("SomeAction")';
url += '/?id =' + ID;
location.href = url;
}
}
您必须记住视图中的所有@
内容在服务器中编译和执行,并且不再存在于客户端中。棘手的razor
......
顺便说一句,我会更改确认信息......