0

部分ビューを含む 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 エンティティには、部分ビューに表示される写真オブジェクトのリストがあります。

アクション メソッドが返されたときに部分ビューが更新されない理由を知るには、十分な経験がありません。

4

3 に答える 3