【发布时间】:2014-06-09 23:15:45
【问题描述】:
我有两个模型:
public class UserInfo
{
public long ID { get; set; }
[Required]
[StringLength(50)]
public string FirstName { get; set; }
//...
public bool Falg{ get; set; }
}
public class UserInfoExtra
{
public long ID { get; set; }
[Required]
public string PhoneNumber { get; set; }
//...
}
这两个模型组合在一个 ViewModel 中:
public class UserViewModel
{
public UserInfo UserInfo { get; set; }
public UserInfoExtra ExtraInfo { get; set; }
}
在控制器中:
public ActionResult Create(UserViewModel userinfo)
{
if(userInfo.Flag){
//Remove ExtaInfo from validation in ModelState.IsValid?
}
if (ModelState.IsValid)
{
db.UserInfos.Add(userinfo);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(userinfo);
}
如何从ModelState.IsValid 的验证中删除ExtraInfo?
【问题讨论】:
-
您可以使用
ModelState[key].Errors.Clear();删除个别错误 -
您可以使用 Stephen 的评论,或者如果您启用了客户端验证,则使用 jquery 强制提交(表单)并在服务器端执行 ModelState[key].Errors.Clear();或 if(ModelState.IsValidField(UserInfo)){//userinfor 的模型状态有效}
标签: asp.net asp.net-mvc entity-framework