我的MVC模型就像这2个必填字段和2个可选的必填字段[如果HasOptional属性为true,则只有最后2个字段是必填字段]
[Required(ErrorMessage="Required...")]
public string Title { get; set; }
[Required(ErrorMessage="Required...")]
public string Publisher { get; set; }
public bool HasOptional{get;set;}
public string OptTitle { get; set; }
public string OptPublisher { get; set; }
所以在控制器POST动作中我做的是
if(model.HasOptional)
{
if (string.IsNullOrEmpty(Convert.ToString(model.OptTitle)))
{
ModelState.AddModelError.Add("OptTitle","required....");
}
if (string.IsNullOrEmpty(Convert.ToString(model.OptPublisher)))
{
ModelState.AddModelError.Add("OptPublisher","required....");
}
}
如果属性为null,我会在视图中收到验证消息而没有任何问题。但我的问题是 如果我在View中填写OptTitle / OptPublisher并更改文本框的焦点,我仍然可以在屏幕上看到验证消息。 填写信息后是否有任何方法可以消除验证[如前2个属性标题和发布者的默认行为]
答案 0 :(得分:0)
添加客户端验证并手动编写或使用jQuery不引人注意的验证,该验证将由您的数据注释属性引导。
如果您采用不引人注意的方法,请确保您已包含该脚本(随MVC提供)并在Web配置中启用。
相关教程: http://www.codeproject.com/Articles/577937/A-Beginners-Tutorial-on-Validating-Model-Data-and