1

2つの画像をアップロードするフォームがあります。これらの画像のサイズなどの検証を行い、画像フィールドが空白のままになっていないかどうかを確認できるようにしたい。

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 に答える