在asp.net mvc中设置来自控制器的动态数据注释错误消息

时间:2019-05-14 08:08:38

标签: asp.net-mvc validation data-annotations

我正在创建asp.net mvc应用程序,将错误消息存储在数据库中,现在我想在用户单击“提交”时使用必需的字段批注而不是自定义js验证,我的模型如下所示,

[Required(ErrorMessage = "static error message")]
public string AttributeValue { get; set; }

我要添加动态错误消息,而不是->(静态错误消息)

有一种方法可以添加来自控制器的动态错误消息。

1 个答案:

答案 0 :(得分:3)

距离您问这个问题已有几个月了,但我最终还是在这里寻找同样的东西。

我需要动态设置一个正则表达式,而不是像注释中的@Golda那样创建自己的验证器,我作弊,只是使用模型上的属性设置数据值错误,这是所有必需的属性在TagHelper的帮助下进行任何操作。

像往常一样构建模型并添加其他属性以保存错误消息

[Required(ErrorMessage = "static error message")] // Leave this here for server side
public string AttributeValue { get; set; }

public string AttributeValueRequiredErrorMessage { get; set; }

在控制器中,请确保您设置了此属性

 public async Task<IActionResult> SomeAction()
 {
      .... // other logic
      var  attributeValueRequiredErrorMessage  = callTheDb();

      var model = new Model()
      {
            AttributeValueRequiredErrorMessage = attributeValueRequiredErrorMessage
      }

      return View(model);  
 }

然后您认为只需执行此操作

<input asp-for="AttributeValue " data-val-required="@Model.AttributeValueRequiredErrorMessage " />

这可以快速获胜,但是如果您在多个地方这样做,我可能会考虑其他选择。

如果您不介意访问热门服务器,也可以在dotnet核心中实现[Remote]属性,请参阅文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-3.0#remote-attribute