gpt4 book ai didi

c# - 自定义 ValidationAttribute ErrorMessage 未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:34 32 4
gpt4 key购买 nike

我构建了一个简单的日期检查来验证表单中的日期是否小于当前日期。

ValidationAttribute

public class DateIsValidAttribute : ValidationAttribute
{
private const string DefaultErrorMessage = "Datumet är ogiltigt";
public string DateNotValidErrorMessage { get; set; }

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{

DateTime? d = Convert.ToDateTime(value);

if (d > DateTime.Now)
{
return ValidationResult.Success;
}

return new ValidationResult(DateNotValidErrorMessage ?? DefaultErrorMessage);
}

}

ViewModel

[Required(ErrorMessage = "Prenumerationen måset ha ett startdatum")]
[Display(Name = "Startdatum")]
[DateIsValid(DateNotValidErrorMessage = "Ogiltigt datum.")]
public DateTime? StartDate { get; set; }

HTML

<div class="form-group">
<label asp-for="StartDate"></label>
<input type="text" asp-for="StartDate" class="form-control" id="startDate" />
<span asp-validation-for="StartDate" class="text-danger"></span>
</div>

它自己的验证按预期工作,但 ErrorMessage 不会显示。我在 ViewModel 中拥有的所有其他 ErrorMessages 都有效。他们使用 Default ValidationAttribute。

最佳答案

我假设默认的 ValidationAttribute 类在它是 IsValid 方法中使用 ErrorMessage 属性做一些事情。在您的情况下,您没有对 IsValid 方法中的该属性执行任何操作,因此 ErrorMessage 属性没有任何反应。

检查您是否可以覆盖返回 ValidationResult 的 IsValid 方法,您可以在其中将错误消息作为参数发送。如果您的计算成功,您可以返回 ValidationResult.Success 或任何您想要的。

关于c# - 自定义 ValidationAttribute ErrorMessage 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962047/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com