在 asp.net mvc 中设置来自控制器的动态数据注释错误消息
set dynamic data annotation error message from controller in asp.net mvc
我正在创建 asp.net mvc 应用程序,我在其中将我的错误消息存储在我的数据库中,现在我想在用户单击提交时使用必填字段注释而不是自定义 js 验证,我的模型如下所示,
[Required(ErrorMessage = "static error message")]
public string AttributeValue { get; set; }
我想添加动态错误消息而不是 ->(静态错误消息)
有没有办法从控制器添加动态错误消息。
我需要动态设置一个正则表达式,而不是像@Golda 在评论中建议的那样创建我自己的验证器,我作弊并只是使用我模型上的属性设置数据验证错误,这就是全部required 属性在 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
我正在创建 asp.net mvc 应用程序,我在其中将我的错误消息存储在我的数据库中,现在我想在用户单击提交时使用必填字段注释而不是自定义 js 验证,我的模型如下所示,
[Required(ErrorMessage = "static error message")]
public string AttributeValue { get; set; }
我想添加动态错误消息而不是 ->(静态错误消息)
有没有办法从控制器添加动态错误消息。
我需要动态设置一个正则表达式,而不是像@Golda 在评论中建议的那样创建我自己的验证器,我作弊并只是使用我模型上的属性设置数据验证错误,这就是全部required 属性在 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