使用Ajax进行Asp.Net MVC部分视图更新

时间:2014-06-16 20:37:43

标签: jquery ajax asp.net-mvc-4 asp.net-mvc-partialview

我有一个asp.net mvc应用程序。我需要用ajax帖子重新加载部分。这是我在主视图中的cshtml代码:

<button data-url='@Url.Action("GetErrors", "Interface", new { servers = "S97EGESRV01" })'
            class="js-reload-details">
        Reload
    </button>
    <div id="errorListDiv">

        @Html.Partial("~/Views/Partials/_ErrorListPartial.cshtml", Model.Errors)
    </div>

的javascript:

$('.js-reload-details').on('click', function (evt) {
    evt.preventDefault();
    evt.stopPropagation();

    var errorListDiv = $('#errorListDiv');
    var url = $(this).data("Interface/GetErrors?servers=S97EGESRV01");

    $.get(url, function (data) {
        errorListDiv.replaceWith(data);
    });
});

C#:

public ActionResult HatalariGetir(string servers= "All", InterfaceViewModel interfaceModel = null)
{
if (interfaceModel == null) {
     interfaceModel = new InterfaceViewModel();
}
// Some database processes
List<ErrorViewModel> modelList = new List<ErrorViewModel>();
// Populating modelList
interfaceModel.Errors = modelList;
return View("~/Views/Partials/_ErrorListPartial.cshtml", interfaceModel.Errors);
}

但事情是当我点击&#34;重新加载&#34;按钮,整个页面加载在errorListDiv中。不只是部分视图。我做错了什么?

编辑: 我试过这个:

return PartialView("~/Views/Partials/_ErrorListPartial.cshtml", interfaceModel.Errors);

不幸的是结果是一样的。

2 个答案:

答案 0 :(得分:2)

尝试将此添加到您的视图文件中。

@{
    Layout = null;
}

答案 1 :(得分:1)

实际上您的部分视图效果不像部分视图,它使用主布局呈现为完整视图,因此您需要明确告诉视图通过在视图顶部添加此行,不要使用任何主布局:

@{


Layout = null;

}