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

问题描述 投票:0回答:2

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

我的注释:

    [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:我已禁用客户端验证。

c# asp.net-core-mvc
2个回答
0
投票

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

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

0
投票

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

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

   return View(objectToPass); //This will work
}
© www.soinside.com 2019 - 2024. All rights reserved.