JavaScript 故障

标签 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 })'
        }
}

错误是:名称“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/

相关文章:

javascript - 类型 'boolean' 不可分配给类型 'Promise<boolean>'

c# - MVC + 我如何在 Controller 操作之前提醒提示用户

jquery - Fancybox 与 MVC Razor

asp.net - Umbraco:从媒体库输出 SVG 文件的内容

c# - 将 XML(以格式化方式)显示到 Razor Textarea

javascript - 如果未输入任何内容,则使 javascript 按钮不执行任何操作

javascript - 使用 JavaScript 连接 Facebook

html - cshtml按钮上下对齐

javascript - 为什么垂直滚动条总是可见

c# - 路线模式与单独路线