部分ビューを含む MVC 4 ビューがあります。部分ビューは、次のようにメイン ビューに含まれます。
<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 エンティティには、部分ビューに表示される写真オブジェクトのリストがあります。
アクション メソッドが返されたときに部分ビューが更新されない理由を知るには、十分な経験がありません。