是否有一种快速方法可以为模型中的所有字段默认错误消息?
我希望验证返回文本:
“* required”
...但不想在每个字段上手动设置它。
谢谢保罗
答案 0 :(得分:3)
您可以编写自定义必需属性
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true, Inherited = true)]
public sealed class AEMRequiredAttribute: ValidationAttribute
{
private const string _defaultErrorMessage = "* required";
public AEMRequiredAttribute()
: base(_defaultErrorMessage)
{ }
public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentUICulture, "* required", name);
}
public override bool IsValid(object value)
{
if (value == null || String.IsNullOrWhiteSpace(value.ToString())) return false;
else return true;
}
}
如下所示调用此属性:
public partial class AEMClass
{
[DisplayName("Dis1")]
[AEMRequiredAttribute]
public string ContractNo { get; set; }
}
答案 1 :(得分:0)
您可以创建一个新的HTML帮助程序,然后调用基础ValidationMessage
或ValidationMessageFor
帮助程序设置消息文本。
基于ValidationMessageFor
的内容如下所示:
public static class HtmlHelperExtensions {
public static IHtmlString ValidatorMessageWithMyTextFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) {
return htmlHelper.ValidationMessageFor<TModel, TProperty>(expression, "required *");
}
}
您可以使用
将其添加到视图中@Html.ValidatorMessageWithMyTextFor(m=>m.MyModelPropertyToValidate)
当然,所有这些都适用于应用程序的视图而不是模型端,所以这一切都取决于您希望嵌入消息的位置。如果它是模型方面,那么AEM的解决方案是一个很好的解决方案。