基于自定义本地化错误消息asp core 3.1创建自定义jquery验证规则

Posted

技术标签:

【中文标题】基于自定义本地化错误消息asp core 3.1创建自定义jquery验证规则【英文标题】:Create custom jquery validation rule based on custom localized error message asp core 3.1 【发布时间】:2021-03-02 16:17:08 【问题描述】:

注意事项:

    我正在使用共享资源来本地化错误消息,它适用于所有 .net 注释属性 我在启动类中注入了dataannotation服务来接受共享资源本地化

这是我的审核代码

public string PageName  get; set;     //For custom validation purposes
[Display(Name = "Name")]
[RequiredIf("PageName", "Contacts", ErrorMessage = "This field is required")]
public string PageName  get; set; 


public class RequiredIfAttribute : ValidationAttribute, IClientModelValidator

    private String PropertyName  get; set; 
    private Object DesiredValue  get; set; 
    private readonly RequiredAttribute _innerAttribute;
    public RequiredIfAttribute(String propertyName, Object desiredvalue)
    
        PropertyName = propertyName;
        DesiredValue = desiredvalue;
        _innerAttribute = new RequiredAttribute();
    

    protected override ValidationResult IsValid(object value, ValidationContext context)
    

        var dependentValue = context.ObjectInstance.GetType().GetProperty(PropertyName).GetValue(context.ObjectInstance, null);

        if (dependentValue != null && dependentValue.ToString() == DesiredValue.ToString())
        //if (dependentValue == null || dependentValue.ToString() != DesiredValue.ToString())
        
            if (!_innerAttribute.IsValid(value))
            
                // if validation result is wrong
                return new ValidationResult(ErrorMessage);
            
        
        // if validation result is correct
        return ValidationResult.Success;
    


    public void AddValidation(ClientModelValidationContext context)
    
        if (context == null)
        
            throw new ArgumentNullException("context");
        
        context.Attributes.Add("data-val", "true");
        context.Attributes.Add("data-val-requiredIf", ErrorMessage);  //Here i need to get the localized message
        context.Attributes.Add("data-seed-property", PropertyName);
        context.Attributes.Add("data-desired-value", DesiredValue.ToString());
    

【问题讨论】:

请您点击“接受答案”。 【参考方案1】:

这是一个演示。根据这个模型在Index.cshtml中创建一个表单。

<form id="loginForm" method="post">
<div>
    <label>PageName</label>   
    <input asp-for="@Model.PageName" />
</div>
<div>
    <input type="submit" name="login" id="submit" value="save">
</div>

参考 jquery.validate.min.js 并设置规则。

@section Scripts 
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script>
    $(function () 
        $("#loginForm").validate(
            rules:
            
                PageName://Locate the name value of the element attribute
                
                    required: true,
                    minlength: 2,
                    maxlength: 10
                
            ,
            messages:
            //Define rule prompt message
                PageName:
                
                    required: "Le nom d'utilisateur ne peut pas être vide",
                    minlength: "Pas moins de 2",
                    maxlength: "Pas plus de 10 chiffres"
                
            
        );
    );
</script>

此属性message 定义错误消息。

【讨论】:

以上是关于基于自定义本地化错误消息asp core 3.1创建自定义jquery验证规则的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 模型绑定错误消息本地化

基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库

ASP.NET Core WebApi HttpResponseMessage 创建自定义消息?

如何在 asp.net core 2.1 中使用自定义消息设置状态代码?

Wcf 服务在 .NET Core 3.1 控制台应用程序中工作,但在 ASP.NET Core 3.1 Web API 中无法工作

ASP.NET Core自定义响应内容