2012-09-13 30 views
6

Khi tôi cố tải ảnh lên bộ điều khiển MVC của mình và có lỗi xác thực, tôi phải nhấp qua từng nút và tìm lại tất cả các tệp của tôi.Trả lại HttpPostedFileBase để xem lỗi xác nhận

Nếu tôi có một cái nhìn mà bao gồm

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

và một hành động điều khiển như

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

Các tập tin được đăng với số tiền phạt máy chủ nhưng nếu có một lỗi mô hình xác nhận, là có bất kỳ cách nào để trả về mô hình VÀ các tệp để người dùng không phải tải lên lại nữa?

Trả lời

8

Điều này là không thể. Giá trị của loại intput = "tệp" không bao giờ được sử dụng để phân tích cú pháp trang HTML. Đó là một nguy cơ bảo mật rất lớn, do đó, không có trình duyệt hiện đại nào cho phép họ giữ lại các giá trị.

Nếu bạn chắc chắn rằng khách hàng của bạn đang sử dụng trình duyệt với sự hỗ trợ HTML5, bạn có thể thử sử dụng JavaScript tập tin API để loại bỏ postbacks - kiểm tra sau bài báo:

+0

Cảm ơn bạn đã phản hồi. Đó là sự nghi ngờ của tôi nhưng tôi chỉ muốn chắc chắn. Các bài viết bạn cung cấp là hữu ích. Cám ơn bạn một lần nữa. – kevskree