Javascript故障

时间:2012-04-01 13:52:30

标签: javascript asp.net-mvc razor

有人可以解释一下为什么这个脚本无效吗?

<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 }它工作正常。有什么问题?

1 个答案:

答案 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 ......

顺便说一句,我会更改确认信息......