当前上下文MVC中不存在名称“按钮”

时间:2014-05-05 07:06:53

标签: jquery asp.net-mvc json

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

$(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>

这是按钮的功能:

 @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>
        }

3 个答案:

答案 0 :(得分:2)

剃须刀无法访问

Javascript 变量。

这样做:

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

答案 1 :(得分:1)

您使用button作为变量,但必须是字符串。

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

此外,我不确定是否有button这样的html元素。也许你应该使用<input type="button" />?。

答案 2 :(得分:0)

问题是,在编译剃刀视图时会对Url.Action进行评估,但是按钮变量是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>