加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 不为嵌套属性规则呈现不显眼的客户端验证数据属

发布时间:2020-12-16 07:05:48 所属栏目:asp.Net 来源:网络整理
导读:使用FluentValidation 4.4,以下规则在输入字段上发出正确的不显眼的验证数据属性: RuleFor(e = e.PrimaryContact).NotEmpty(); 呈现以下html: input class="text-box single-line k-textbox input-validation-error" data-val="true" data-val-required="'
使用FluentValidation 4.4,以下规则在输入字段上发出正确的不显眼的验证数据属性:

RuleFor(e => e.PrimaryContact).NotEmpty();

呈现以下html:

<input class="text-box single-line k-textbox input-validation-error" 
       data-val="true" data-val-required="'Primary Contact' should not be empty." 
       id="PrimaryContact" name="PrimaryContact" type="text" value="">

但是,具有嵌套属性的规则不会发出任何验证数据属性:

RuleFor(e => e.Company.Name).NotEmpty();

呈现以下html:

<input class="text-box single-line k-textbox" id="Company_Name" name="Company.Name" type="text" value="">

我错过了什么?

解决方法

在您需要验证子对象中的每个属性的情况下,这可能会有点草率.我建议他们在 documentation here上做他们所拥有的.

[Validator(typeof(ParentObjectValidator))]
public class ParentObject 
{
    public string PrimaryContact {get;set;}
    public Company Company {get;set;}
}

[Validator(typeof(CompanyValidator))] // This one is required!
                                      // Otherwise no data-val-required will be assigned
public class Company
{
    public string Name {get;set;}
}

为子对象设置验证器.

public class CompanyValidator : AbstractValidator<Company> {
    public CompanyValidator() {
      RuleFor(company => company.Name).NotEmpty();
      //etc
    }
}

然后,在您的父对象中,您可以像这样将该验证器设置为子对象.

public class ParentObjectValidator : AbstractValidator<ParentObject> {
  public ParentObjectValidator() {
    RuleFor(e => e.PrimaryContact).NotEmpty();
    RuleFor(e => e.Company).SetValidator(new CompanyValidator());
  }
}

这应该指向正确的方向!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读