1

我有一个上传两张图片的表格。我想对这些图像进行验证,例如图像大小,并且我希望能够检查图像字段是否没有留空。

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,我该如何验证?

有任何想法吗 ?

4

1 回答 1

3

您可以向 ModelState 添加错误,然后重新显示相同的视图,如下所示:

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

然后在视图中,如果您有ValidationSummary ,您的验证错误消息将显示在其上(第一个参数是与控件 ID 匹配的“键”,通常在旁边显示消息,这就是为什么这里是 String.empty但也许您有一个希望与之关联的控件)。

于 2012-04-10T14:27:36.697 回答