我有一個包含局部視圖的MVC 4視圖。局部視圖被包括在主視圖中,如下所示:MVC 4 - 無法通過Ajax調用更新局部視圖
<div id="PartialView">
@Html.Partial("_PhotoList", @Model)
</div>
我的局部視圖看起來如下:
@model ExchangeSite.Entities.EstateSaleSellerListing
<div style="width: 1300px; height: 300px; overflow: auto">
@foreach (var photo in @Model.ImageList)
{
<a href="javascript:DeletePhoto(@photo.ImageId);">
<img src="@Url.Action("GetPhoto", new { id = photo.ImageId })" alt="" title="Click on the image to remove it" width="250" height="190"/>
</a>
}
</div>
<script>
function DeletePhoto(imageId) {
var Url = "/EstateSaleSellerListing/DeletePhoto";
$.get(Url, { imageId: imageId }, function (data) {
$("#PartialView").html(data);
});
}
</script>
正如你可以看到,當圖像上的用戶點擊,則DeletePhoto()方法被調用。它調用指定控制器上名爲DeletePhoto的操作方法。操作方法會刪除照片,生成新的照片列表並更新局部視圖。除部分視圖之外的所有內容都不會更新。
我的控制器的代碼如下:
public ActionResult DeletePhoto(int imageId)
{
var photo = this._systemLogic.GetItem<Photo>(row => row.ImageId == imageId);
this._systemLogic.DeleteItem(photo);
EstateSaleSellerListing listing = new EstateSaleSellerListing();
GetPhotoList(listing);
return PartialView(listing);
}
的EstateSaleSellerListing實體具有獲得顯示在局部視圖照片的對象的列表。
我沒有足夠的經驗知道爲什麼我的部分視圖在操作方法返回時沒有更新。
您正在嘗試更新主視圖的div。在局部視圖中,命名您的div並在js中更新它。我希望它有幫助。 – Tushar