1

私の MVC アプリケーションでは、ファイルに次のコードを使用しています。

モデル

public HttpPostedFileBase File { get; set; }

見る

@Html.TextBoxFor(m => m.File, new { type = "file" })

すべて正常に動作しています..値を送信するためですが、動作していないコントローラーモデルからファイルをロードしようとしています

コントローラ

public ActionResult ManagePhotos(ManagePhoto model)
{
    if(ModelState.IsValid)
    {
           //upload file
    }
    else
    {
          return View(model); //contains type HttpPostedFileBase File { get; set; }
    }
}

戻った後に検証が失敗した場合、ファイル入力を再度ロードするにはどうすればよいですか?ファイル コントロールがモデルからファイルにマップされておらず、空です...

4

2 に答える 2

0

ファイルが有効であることがわかっていて、一時的に保持したい場合は、セッションに保持できます (ただし、メモリ使用量に注意してください)。

ファイルが有効であることがわかっていて、それを永続的に保持したい場合は、ファイルを保存し、パスをメモリに保持してください。

ファイルが無効であることがわかっている場合は、それを保持したくないか、保持できないことがよくあります。

多くの場合、これは検証の失敗時にパスワードと同じように扱われます。再度提供する必要があり、他のすべてが良好な場合にのみ要求されます。

于 2012-11-30T13:09:21.480 に答える
0

ユーザーエクスペリエンスをシームレスにするために必要なところまで行きたい場合は、次のことを試してください。

  1. クライアント側に JavaScript を追加して、ユーザー入力を検証します
  2. サーバー側では、すべてのファイルを一時的に tmp ファイル ストレージに保存します。10 分以上経過したファイルをクリーンアップします。ファイルをストレージに保存する必要がある場合にこれを行います
于 2012-12-05T10:37:32.160 に答える