使用Ajax更新部分视图无法正常工作

时间:2017-07-05 10:39:24

标签: c# jquery ajax asp.net-mvc-5

尝试使用MVC 5中的部分视图,无法在按钮点击时使用Ajax刷新我的局部视图:

这是我的部分观点:

@model dbsapplication.Models.CarRepository

   @{
        Layout = null;
   }

@Html.DisplayFor(model => model.Engine)

在我的索引页面中,我有:

<div id="@car.ID">
       @Html.Partial("PartialView", car)
</div>

和我的按钮:

<button onclick="loadProject(@car.ID)">Car ID: @car.ID</button>

我的Ajax电话:

<script>
function loadProject(car_ID) {
//alert('#' + car_ID);
    $.ajax({
        type: "GET",
        url: '/Home/partialView/',
        data: { id: car_ID },            
        async: true,
        cache: false,
        dataType: "html",
        success: function (data) {
            $('#' + car_ID).empty();
            $('#' + car_ID).html(data);
            alert("Updated!");
            },
        });
    }
</script>

我的控制员:

public PartialViewResult partialView(int id)
{
   CarRepository car = new CarRepository();
   car.updateCar_partial(id);
   return PartialView("PartialView", car);
}

car.updateCar_partial(ID);

此方法只是将给定汽车的引擎设置回默认值(“未指定”)。当我单击按钮时,ajax调用会运行并触发警报,但是要加载的数据DIV会变为空白。仅当我刷新页面时,部分视图才会更新为正确的值。

通过F5刷新或者当我添加location.reload时,我认为这会破坏目的,因为这会重新加载整个页面而不是div。

不确定我正在做什么是可能的,任何帮助将不胜感激。

其他问题我必须尝试修复:

Update Partial View Within Partial View Using MVC Ajax AJAX not updating partial view

1 个答案:

答案 0 :(得分:0)

我建议使用jquery load()函数将部分视图填充到目标html元素中,如下所示。

function loadProject(car_ID) {

     var url = '@Url.Action("partialView", "Home")' + "?id=" + car_ID;
     var targetElement = $("#" + car_ID);

     targetElement.load(url, function(responseTxt, statusTxt, xhr){
         if(statusTxt == "success")
         console.log("It worked");
     })
}