要验证绑定到具体类型的HttpPost操作,我可以使用ModelState.IsValid
public ActionResult Create(MyModelType myModel)
{
if(ModelState.IsValid)
{
// Do some stuff
return RedirectToAction("Details", 0);
}
else
{
return View();
}
}
这显然不适用于FormCollection
,因为没有需要验证的模型。
public ActionResult Create(FormCollection collection)
{
if(ModelState.IsValid) // Never invalid
{
当操作接受一个ModelState.IsValid
时,应该用什么代替FormCollection
?
万分抱歉,我知道这是个愚蠢的问题
发布于 2011-06-10 02:14:32
这很正常。你需要UpdateModel
public ActionResult Create()
{
var model = new MyModelType();
UpdateModel(model);
if(ModelState.IsValid)
{
...
}
...
}
在第一种情况下,调用默认的模型绑定是因为它需要从请求绑定模型。然后,这个默认的模型绑定将基于您的数据注释规则执行验证。在第二种情况下,你什么也不做。控制器操作不了解您的模型及其用于验证的数据注释。因此,模型状态将始终有效,因为没有任何东西会使其无效。
尽管如此,你应该始终使用第一种方法。FormCollection
是没用的。即使您使用第二种方法(我完全不推荐这种方法),但您可以看到,您不需要任何FormCollection。
https://stackoverflow.com/questions/6304822
复制