我目前正在C#MVC Core中实现一些自定义属性,并且我遇到了ValidationAttribute问题.验证应在表单提交时触发.
public class Company
{
[CustomRequired]
[CustomValidation]
public string Name { get; set; }
}
这个属性工作得很好,当我提交表单时,会在调试模式下触发覆盖.
public class CustomRequired : RequiredAttribute
{
public override string FormatErrorMessage(string name)
{
//logic
return name;
}
}
这就是问题所在.如果我创建构造函数,它会被调用,但被覆盖的方法永远不会触发.
public class CustomValidation : ValidationAttribute
{
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
//logic
return ValidationResult.Success;
}
}
这也是前端实现
@model Company;
<form method="post" asp-controller="Company" asp-action="SaveData">
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name, null, new {@class="text-danger"})
<button type="submit">Submit</button>
</form>
我try 使用一些默认属性,如Required、StringLength,它们都工作得很好,当我单击提交时会显示消息.