有人可以解释一下为什么这个脚本不起作用吗?
<script type="text/javascript">
function destroy(ID) {
if (confirm("Deleting is a very bad thing! Sure?"))
{
location.href='@Url.Action("SomeAction", new { id = ID })'
}
}
错误是:名称“ID”在当前上下文中不存在,并且出现在此处 new { id = ID }
如果我只是用这种方式替换 ID: new { id = 3 }
它工作正常。有什么问题吗?
最佳答案
将服务器代码与客户端代码混合在一起。
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;
}
}
你必须记住 View 中的所有@
内容都是在服务器中编译和执行的,并且不再存在于客户端中。棘手的 Razor
...
顺便说一句,我会更改确认消息...
关于JavaScript 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964893/