校正后验证错误不会消失

时间:2014-10-31 06:55:14

标签: c# asp.net-mvc-3 validation razor

我的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个属性标题和发布者的默认行为]

1 个答案:

答案 0 :(得分:0)

添加客户端验证并手动编写或使用jQuery不引人注意的验证,该验证将由您的数据注释属性引导。

如果您采用不引人注意的方法,请确保您已包含该脚本(随MVC提供)并在Web配置中启用。

相关教程: http://www.codeproject.com/Articles/577937/A-Beginners-Tutorial-on-Validating-Model-Data-and