2012-04-10 1 views
1

У меня есть форма, которую я загружаю двумя изображениями. Я хочу сделать валидацию на этих изображениях, таких как размер изображения, и я хочу, чтобы проверить, не осталось ли поле изображения пустым.MVC 3 Проверка поля изображения

public ActionResult Create(NewsViewModel newsViewModel, IEnumerable<HttpPostedFileBase> files) 
    { 
     try 
     { 
      //more code here 

      var originalFile = string.Empty; 

      IList<string> images = new List<string>(2); 

      foreach (var file in files) 
      { 
       if (file != null && file.ContentLength > 0) 
       { 
        var fileName = Path.GetFileName(file.FileName); 
        if (fileName != null) originalFile = Path.Combine(Server.MapPath(upload_path), DateTime.Now.Ticks+"_ "+ fileName); 
        file.SaveAs(originalFile); 

        images.Add(originalFile); 
       } 
      } 

      if (images.Count == 2) 
      { 
       newsViewModel.News.Thumbnail = images[0] ?? ""; 
       newsViewModel.News.Image = images[1] ?? ""; 
      } 
      //more code here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

Как я могу отправить ответ обратно в форму после проверки размеров изображения и узнать, что они недействительны?

или если images.count не 2, как это подтвердить?

любые идеи?

+0

Возможный дубликат [Как проверить загруженный файл в ASP.NET MVC?] (Http://stackoverflow.com/questions/6388812/how-to-validate-uploaded-file-in-asp-net-mvc) – StriplingWarrior

ответ

3

Вы можете добавить ошибку в ModelState, а затем повторно показать тот же вид, что-то вроде этого:

ModelState.AddModelError(string.Empty, "The image is not valid becuase..."); 
return View(newsViewModel) 

Тогда в представлении, если у вас есть ValidationSummary ваше сообщение об ошибке проверки будет показано на нем (первый аргумент - это «ключ», который соответствует идентификатору элемента управления, чтобы показывать сообщение рядом с ним обычно, поэтому здесь есть String.empty, но, возможно, у вас есть элемент управления, с которым вы хотите связать).

+0

Я бы добавил, что вы должны сделать проверки и отклонить подачу ** до того, как ** сохранить что-либо - сделать все или ничего. –

Смежные вопросы