簡體   English   中英

使用Ajax進行Asp.Net MVC部分視圖更新

[英]Asp.Net MVC Partial View Update with Ajax

我有一個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);
}

但事情是當我點擊“重新加載”按鈕時,整個頁面被加載到errorListDiv中。 不只是部分視圖。 我究竟做錯了什么?

編輯:我試過這個:

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

不幸的結果是一樣的。

嘗試將此添加到您的視圖文件。

@{
    Layout = null;
}

實際上,您的局部視圖不像部分視圖那樣工作,它是使用主布局作為完整視圖進行渲染,因此您需要通過在視圖頂部添加此行來明確告知在視圖中不使用任何主布局:

@{


Layout = null;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM