Jquery 名称';按钮';在当前MVC上下文中不存在

Jquery 名称';按钮';在当前MVC上下文中不存在,jquery,asp.net-mvc,json,Jquery,Asp.net Mvc,Json,我在这行的“按钮”上看到标题错误: $(this).load("@Url.Action("defectsPartial", new { id = button})"); 在我的脚本中: <script> $(function () { $("#myModal").dialog({ autoOpen: false, height: 600, width: 700,

我在这行的“按钮”上看到标题错误:

$(this).load("@Url.Action("defectsPartial", new { id = button})");
在我的脚本中:

<script>
    $(function () {
        $("#myModal").dialog({
            autoOpen: false,
            height: 600,
            width: 700,
            modal: true,
            open: function (event, ui) {
                var button = document.getElementById("button").value;
                $(this).load("@Url.Action("myPartial", new { id = button})");
            },
                buttons:{
                    "Close": function () {
                        $(this).dialog("close");
                    }
                }
        });
        $(".launch").click(function () {
            $("#myModal").dialog("open");
        });
    });
</script>

$(函数(){
$(“#myModal”)。对话框({
自动打开:错误,
身高:600,
宽度:700,
莫代尔:是的,
打开:功能(事件、用户界面){
var button=document.getElementById(“按钮”).value;
$(this.load(“@Url.Action(“myPartial”,new{id=button})”);
},
按钮:{
“关闭”:函数(){
$(此).dialog(“关闭”);
}
}
});
$(“.launch”)。单击(函数(){
$(“#myModal”)。对话框(“打开”);
});
});
这是按钮的功能:

 @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Id)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Title)
                </td>
                <td>
                    <button class="launch" value= "@item.Id" id="button">Go</button>
                </td>
            </tr>
        }
@foreach(模型中的变量项)
{
@DisplayFor(modeleItem=>item.Id)
@DisplayFor(modeleItem=>item.Title)
去
}

您使用
按钮作为变量,但它必须是字符串

$(this).load('@Url.Action("defectsPartial", new { id = "button"})');

另外,我不确定是否有像
按钮
这样的html元素。也许您应该使用
?。

Javascipt变量在razor中不可访问

这样做:

var url = '@Url.Action("defectsPartial")';
url = url+"?id="+button;
$(this).load(url);

问题是,Url.Action在razor视图的编译时得到评估,但button变量是javascript,它在客户端得到评估

您必须手动添加id:

<script>
    $(function () {
        $("#myModal").dialog({
            autoOpen: false,
            height: 600,
            width: 700,
            modal: true,
            open: function (event, ui) {
                var button = document.getElementById("button").value;
                $(this).load("@Url.Action("myPartial")" + button);
            },
            buttons:{
                "Close": function () {
                    $(this).dialog("close");
                }
            }
        });
        $(".launch").click(function () {
            $("#myModal").dialog("open");
        });
    });
</script>

$(函数(){
$(“#myModal”)。对话框({
自动打开:错误,
身高:600,
宽度:700,
莫代尔:是的,
打开:功能(事件、用户界面){
var button=document.getElementById(“按钮”).value;
$(this.load(“@Url.Action(“myPartial”)”+按钮);
},
按钮:{
“关闭”:函数(){
$(此).dialog(“关闭”);
}
}
});
$(“.launch”)。单击(函数(){
$(“#myModal”)。对话框(“打开”);
});
});

您不能在c#code中使用js变量有一个
按钮
元素,它允许比
输入类型='button'更灵活的格式设置。