0

これは、表示する画像を設定するアクションViewBagです。

public ActionResult UploadPhoto()
{
    List<string> images = new List<string>();

    foreach (var file in Directory.GetFiles(AlbumManager.GetAlbumName(SessionManager.CurrentSession.PropertyId, true)))
    {
        images.Add(Server.RelativePath(file));
    }

    ViewBag.Images = images;

    return PartialView("UploadPhoto");
}

選択した画像を削除するために使用される投稿アクションは次のとおりです。

[HttpPost]
public ActionResult DeletePhoto(string imageName)
{
    AlbumManager.DeletePhoto(SessionManager.CurrentSession.PropertyId, imageName);
    return UploadPhoto();
}

ご覧のとおり、削除が完了するとUploadPhoto、現在存在する画像を印刷する必要があるアクションにリダイレクトされます。ただし、ポストバック後も、削除された画像は引き続き表示されます。私はこの振る舞いについて非常によくわかりません。これを解決するのを手伝ってください。

次のコードを使用して、動作中のモデルの状態をクリアしてみましたDeletePhotoが、使用できません。

ModelState.Clear();

私の見解:

@using (Html.BeginForm("DeletePhoto", "Add", FormMethod.Post, new { id = "PhotoDelete" }))
{
    <input type="hidden" name="imageName" id="imageName" />

    <div class="thumnailsBox">
        @foreach (var image in ViewBag.Images)
        {
            <div class="thumnailTails">
                <span class="thumbimage">
                    <input id="imageSubmit" type="image" alt="No Image" src="@Url.Content(image)" /></span>
            </div>
        }
    </div>
}

解決:

IronMan84の答えに加えて、これが私の問題の実際の解決策です。

[HttpPost]
public ActionResult DeletePhoto(string imageName)
{
    AlbumManager.DeletePhoto(SessionManager.CurrentSession.PropertyId, imageName);
    return JavaScript("location.reload(true)");
}

ここでページをリロードするスクリプトをレンダリングしています。

4

3 に答える 3

5

アクションにリダイレクトしていませんUploadPhoto

RedirectToAction("UploadPhoto");リダイレクトに使用します。

また、コードをデバッグしてAlbumManager、データがキャッシュされていないか、削除を実行していないかを確認することもできます。

于 2012-12-28T15:09:20.200 に答える
1

MVC が最初のメソッドからのアクション出力をキャッシュしていると考えています。OutputCacheのドキュメントを確認する必要があります。プロパティの設定を試すことができNoStoreます。それが機能しない場合は、おそらくDuration0 でキャッシュが妨げられますか?

于 2012-12-28T15:14:39.900 に答える
1

UploadPhoto で PartialView を返していますが、フォームは実際にはその PartialView からの結果で更新する DOM オブジェクトを対象としていません。に切り替えAjax.BeginForm()、AjaxOptions に更新する DOM オブジェクトの名前を含めることをお勧めします。詳細については、このページを参照してください

于 2012-12-28T15:25:05.733 に答える