7

画像を MVC コントローラー アクションにアップロードしようとして検証エラーが発生した場合、各ボタンをクリックしてすべてのファイルを再度検索する必要があります。

で構成されるビューがある場合

<input type="file" id="file0" name="Files[0]" />
<input type="file" id="file1" name="Files[1]" />

そして、次のようなコントローラーアクション

public ActionResult Create(ModelClass model, IEnumerable<HttpPostedFileBase> Files)
{
    if(ModelState.IsValid)
    {
        //do work
        if(PhotoValidation.IsValid(Files))
        {
            //do work
        }
        else 
        {
            ModelState.AddModelError("","Photos not valid");
        }
    }
    return view(model); // Way to return photos back to the view on modelstate error?
}

ファイルは問題なくサーバーに投稿されますが、モデルの検証エラーが発生した場合、ユーザーが再度アップロードする必要がないように、モデルとファイルを返す方法はありますか?

4

1 に答える 1

10

これは不可能です。intput type = "file"の値は、HTMLページの解析には使用されません。これは大きなセキュリティリスクであるため、最新のブラウザでは値を「保持」することはできません。

クライアントがHTML5をサポートするブラウザを使用していることが確実な場合は、ポストバックを排除するためにJavaScriptFileAPIを使用してみてください。次の記事を確認してください。

于 2012-09-14T07:09:43.757 に答える