Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何为所有必需的属性验证设置相同的错误消息?_Asp.net Core - Fatal编程技术网

Asp.net core 如何为所有必需的属性验证设置相同的错误消息?

Asp.net core 如何为所有必需的属性验证设置相同的错误消息?,asp.net-core,Asp.net Core,我不熟悉.NETCore。 以下代码将asp.net framework所有必需的验证消息更改为“此字段是必需的” public class CustomRequiredAttribute:RequiredAttribute, IClientValidatable { public override bool IsValid(object value) { return base.IsValid(value);

我不熟悉.NETCore。 以下代码将asp.net framework所有必需的验证消息更改为“此字段是必需的”

 public class CustomRequiredAttribute:RequiredAttribute, IClientValidatable
    {

        public override bool IsValid(object value)
        {
            return base.IsValid(value);
        }

        public override string FormatErrorMessage(string name)
        {
            return base.FormatErrorMessage(name); // expandable to format given message later
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            return new[] { new ModelClientValidationRule { ErrorMessage = "This field is required", ValidationType = "required" } };
        }
    }

对于您的需求,您可以实现
RequiredAttribute、IClientModelValidator

public class DefaultRequiredAttribute: RequiredAttribute, IClientModelValidator
{
    public DefaultRequiredAttribute()
    {
        ErrorMessage = "This field is required";
    }

    public void AddValidation(ClientModelValidationContext context)
    {
        MergeAttribute(context.Attributes, "data-val", "true");
        MergeAttribute(context.Attributes, "data-val-required", ErrorMessage);
    }
    private bool MergeAttribute(IDictionary<string, string> attributes, string key, string value)
    {
        if (attributes.ContainsKey(key))
        {
            return false;
        }

        attributes.Add(key, value);
        return true;
    }
}

真棒的朋友。还有一个问题,如何为RequiredIf编写相同的查询attribute@AnujTamrakar您所说的
要求是什么意思如果
,对于新版本,请打开一个新线程。@Edward IClientModelValidator的库/引用名称是什么?
public class DefaultRequiredAttribute: RequiredAttribute, IClientModelValidator
{
    public DefaultRequiredAttribute()
    {
        ErrorMessage = "This field is required";
    }

    public void AddValidation(ClientModelValidationContext context)
    {
        MergeAttribute(context.Attributes, "data-val", "true");
        MergeAttribute(context.Attributes, "data-val-required", ErrorMessage);
    }
    private bool MergeAttribute(IDictionary<string, string> attributes, string key, string value)
    {
        if (attributes.ContainsKey(key))
        {
            return false;
        }

        attributes.Add(key, value);
        return true;
    }
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    [DefaultRequired]
    public string UserImage { get; set; }
}