2012-09-13 7 views
6

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

私は

<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? 
} 

のようなコントローラのアクションで構成ビューを持っている場合はファイルがサーバーの罰金に掲載されますが、モデルの検証エラーがある場合、そこにありますどのようにしてモデルとファイルを返すことができるので、ユーザーはそれらを再度アップロードする必要はありませんか?

答えて

8

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

あなたのクライアントがHTML5のサポートとブラウザを使用していることを確認している場合は、ポストバックを排除するために、JavaScriptファイルのAPIを使用して試すことができます - チェック次の記事:

+0

ありがとうございます。それは私の疑惑でしたが、私はただ確実にしたいと思っていました。あなたが提供した記事は役に立ちました。ありがとうございました。 – kevskree

関連する問題