我是MVC的初学者。 如果我使用下面的代码,那么Model.IsValid没有验证在这种情况下是Customer的对象。
depl_attachment_to_deal_teams
如果Iam在参数中传递Customer对象,那么Model.IsValid工作正常。
id
any1可以帮助我了解原因。
答案 0 :(得分:5)
由于MVC从未与模型本身绑定,因此无法正常工作。您手动覆盖它,因此MVC无法确定模型是否有效。它并不知道custObj
是模型。
ModelState.IsValid
,因此在第二个示例中,当您允许MVC绑定到模型本身时,它可以正常工作。首先,它不起作用,因为你创建模型并手动绑定它。
<强>更新强>
但是,您也可以通过调用控制器上的ValidateModel
或TryValidateModel
来手动运行模型验证。
文档:
答案 1 :(得分:0)
正如其他答案中所述,您的模型已经在行动之前得到验证并提交了#39;叫做。因此,当您从操作中更改模型时,您必须手动验证模型。您可以使用以下代码。
var context = new ValidationContext(custObj, serviceProvider: null, items: null);
var validationResults = new List<ValidationResult>();
bool isValid = Validator.TryValidateObject(custObj, context, validationResults, true);
if (isValid)
return View("Load", obj);
else
return View("EnterCustomer");
使用以下网址获取更多详细信息。 http://odetocode.com/blogs/scott/archive/2011/06/29/manual-validation-with-data-annotations.aspx