渲染局部视图时出错

时间:2012-02-12 23:36:58

标签: jquery asp.net-mvc-3

我正在渲染ajax请求操作,我希望收到部分视图。 相反,我得到完整的渲染页面,包括布局页面,我不知道为什么

我的行动:

 public PartialViewResult Menu(int? caseId)
    {
        if (caseId != null)
        {
            ViewBag.MenuId = caseId;
        }
        return PartialView("_MenuPartial", null);
    }

我的视图是使用jquery ajax

呈现的
  function loadMenu(id) {
                $.ajax({
                    data: "/Home/Menu?caseId=" + id,
                    success: function (data) {
                        alert(data);
                        $("#menucontainer").html(data);
                    }
                });
            }

最后我的观点名为“_MenuPartial”:

<ul id="menu">
    <li>@Html.ActionLink("Home", "Index", "Home")</li>
    <li>@Html.ActionLink("About", "About", "Home")</li>
    @if (@ViewBag.MenuId == 1 || @ViewBag.MenuId == 2)
    {
        <li>link @ViewBag.MenuId</li>
    }
</ul>

知道为什么它返回整页而不是局部视图?

1 个答案:

答案 0 :(得分:0)

您的.ajax()调用看起来有些偏差。您应该使用“url”属性来调用控制器操作。它看起来像这样:

function loadMenu(id) {
    $.ajax({
        url: "/Home/Menu?caseId=" + id,
        success: function (data) {
            $("#menucontainer").html(data);
        }
    });
}

假设您的所有文件都在正确的文件夹中,您应该得到您期望的结果。如果需要将更复杂的数据类型传递给操作,可以序列化JSON对象并将其发送到data参数中。