自定义验证的错误消息未显示asp.net核心

时间:2018-03-01 13:05:47

标签: c# asp.net-core-mvc

我的自定义验证工作正常,我已对其进行了测试,但错误消息未显示。

我的注释:

    [Required(ErrorMessage = "O campo DATA DE NASCIMENTO é obrigatório")]
    [DataValida( ErrorMessage = "O campo DATA DE NASCIMENTO é inválido")]
    public DateTime DataNascimento { get; set; }

我的验证定义:

public class DataValida : ValidationAttribute
{        
 public override bool IsValid(object value)
 {

    DateTime dt;
    bool result = DateTime.TryParse(value.ToString(),out  dt);

    return result;
   }

}

我的观点:

 <div>
            <label for="tbNome">Data Nascimento:</label>
            <input id="tbDataNascimento" type="text" maxlength="10" placeholder="DD/MM/AAAA" asp-for="DataNascimento" class="form-control" />
            <span asp-validation-for="DataNascimento" class="text-danger"></span>
        </div>

所需的验证显示消息,但我的自定义验证没有。

enter image description here

obs:我已禁用客户端验证。

2 个答案:

答案 0 :(得分:0)

如果您的要求只是为了确保最终用户输入了有效日期,只需使用DataTypeAtribute而不是重新发明轮子:

[DataType(DataType.DateTime)]
public DateTime DataNascimento { get; set; }

答案 1 :(得分:0)

发生错误时我正在重定向。

if(ModelState.IsValid)
{
}
else
{
    return RedirectToAction("action");  //this will cause error messages not to show

   return View(objectToPass); //This will work
}