Asp.net-Mvc

返回 HttpPostedFileBase 以查看驗證錯誤

  • September 14, 2012

當我嘗試將圖像上傳到我的 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?
}

文件可以很好地發佈到伺服器,但是如果出現模型驗證錯誤,有沒有辦法返回模型和文件,這樣使用者就不必再次上傳它們了?

這是不可能的。intput type=“file” 的值從不用於解析 HTML 頁面。這是一個巨大的安全風險,因此沒有現代瀏覽器允許它們“保留”值。

如果您確定您的客戶正在使用支持 HTML5 的瀏覽器,您可以嘗試使用 JavaScript File API 來消除回發 - 請查看以下文章:

引用自:https://stackoverflow.com/questions/12414872