【发布时间】:2014-12-19 14:58:21
【问题描述】:
好的,所以我为之工作的人希望表单验证消息在初始加载时立即显示。在我的 ViewModel 中,我有我所有的要求等...通常会在 POST 上被击中,那么我如何强制在 GET 上进行验证,以便用户在他们第一次输入表单时看到这些验证消息?
我试过了
ValidateModel(viewModel);
和
TryValidateModel(viewModel)
但这些都不起作用。那么有没有简单的方法呢?
所以我有这样的事情:
[HttpGet]
public ActionResult Index()
{
var viewModel = new RandomVieModel();
ValidateModel(viewModel); //For example
return View(viewModel);
}
[HttpPost]
public ActionResult Index(RandomViewModel viewModel)
{
if(!ModelState.IsValid)
{
return View(viewModel);
}
return RedirectToAction("SomethingNew);
}
这是我的视图模型的示例:
public class RandomViewModel
{
[MaxLength(100)]
[MinLength(3)]
public string SomeRandomText { get; set; }
[Required]
public string RandomName { get; set; }
}
【问题讨论】:
-
你从哪里得到这些方法的?您在哪里以及如何尝试这些方法?
-
它们来自 System.Web.Mvc,我只是在返回控制器中的视图之前尝试过它们
-
愚蠢的问题,但是您的 viewModel 类确实具有数据注释属性,对吗?
-
是的,确实如此。我将在上面为您举一个例子。但它适用于 POST。我只想让它在 GET 上工作。
-
TryValidateModel 做了你为我描述的事情......
标签: c# validation modelstate