我想在不使用Data Annotation的情况下执行验证,因为我在n层MVC 4 razor架构中使用了EF。而且数据注释也不适用于EF控件。你们都可以在这里看到我的代码:
[HttpPost]
public ActionResult RegisterNewUser(CreateUser obj)
{
if (ModelState.IsValid)
{
//
}
}
且ModalState.Isvalid
无法正常工作。我该如何解决这个问题?
答案 0 :(得分:1)
我认为您正在寻找的是DataAnnotation验证无法为您提供所需灵活性的情况。
例如,我需要一个可以通过下拉列表选择或输入的地址。 如果其中一个输入的地址行在那里,则所有地址行都需要在那里。 单独使用DataAnnotations很难检查。
我过去所做的是在控件返回控制器之后但在检查ModelState.IsValid之前进行验证。
这允许在控制器中进行自定义/复杂验证
您可以使用
ModelState.AddModelError("PostalCode", "The postal code is missing.");
修改ModelState(使其无效),然后在检查ModelState.IsValid后将控制权返回给视图