【问题标题】:Blazor Validating - is there a way to validate specific fields on model but not all fieldsBlazor 验证 - 有没有办法验证模型上的特定字段,但不是所有字段
【发布时间】:2022-01-18 10:33:28
【问题描述】:

我有一个包含 2 个字段(姓名和地址)的表单,在我的模型中都是必填字段。

在我的模型上,我有 5 个属性(ID (Pk)、Name、Address、Createdby 和 Updatedby),除了主键 ID 之外,它们都设置为必需。

在我的 Editform 上,我想只允许填写 Name 和 Address 字段,但 createdby 和 updatedby 将在我的 Insert 中完成。

如何让这个在我的表单上有效。由于(Createdby和Updatedby)上的必需规则,我变得无效,当我添加validationsummary标签时会出现这种情况。如果我不添加标签,则文本框有效,但 submitPerson 方法无效。

有没有办法解决这个问题?请在下面查看我的代码。

提前致谢。

****MY EDITFORM ********

  <EditForm EditContext="@myEditContext" OnSubmit="@SubmitPerson">
            <DataAnnotationsValidator /> 

                <InputText class="form-control" id="NameInput" @bind-Value="Person.Name" />   
                <InputText class="form-control" id="AddressInput" @bind-Value="Person.Address" />
                <button type="submit" class="btn btn-primary">Submit</button>

  </EditForm>
*********** MY CODE ****************

@code { 

    public PersonModel Person = new PersonModel();
    EditContext myEditContext { get; set; }
    private string ValidMEssage; 

    protected override void OnInitialized() {

        myEditContext = new EditContext(Person);
        base.OnInitialized();

    }



// my submit button method

   protected void SubmitPerson(EditContext editContext) {

        bool isFormValid = editContext.Validate();

        if (isFormValid)
        {   
        //apply when the form is valid
        ValidMEssage = "Save successfully";

        }
        else 
    {
            //apply when the form is not valid
            ValidMEssage = "Invalid";

        }

}
*****MY MODEL ********

  public class PersonModel    {
        public int ID { get; set; }

        [Required(AllowEmptyStrings = false)]
        public String Name { get; set; }

        [Required(AllowEmptyStrings = false)]
        public String Address { get; set; }

        [Required(AllowEmptyStrings = false)]
        public String CreatedBy { get; set; }

        [Required(AllowEmptyStrings = false)]
        public String UpdatedBy { get; set; }

    }

【问题讨论】:

    标签: blazor blazor-server-side asp.net-blazor


    【解决方案1】:

    您的代码按预期工作。您有一个PersonModel,而您的模型永远不满足[Required()] 属性。

    几个选项:

    1. 初始化您的模型以使其有效。

       @code { 
      
           public PersonModel Person = new PersonModel() 
                                          { 
                                              CreatedBy="NonEmpty", 
                                              UpdatedBy="NonEmpty" 
                                          }
      
    2. 删除模型不满足的约束。

    公共类 PersonModel { 公共 int ID { 获取;放; }

        [Required(AllowEmptyStrings = false)]
        public String Name { get; set; }
    
        [Required(AllowEmptyStrings = false)]
        public String Address { get; set; }
    
        public String CreatedBy { get; set; }
    
        public String UpdatedBy { get; set; }
    
    }
    
    1. 为“具有 2 个字段的表单”选择一个可能更合适的模型

      公共类 PersonModel
      {

           public int ID { get; set; }
      
           [Required(AllowEmptyStrings = false)]
           public String Name { get; set; }
      
           [Required(AllowEmptyStrings = false)]
           public String Address { get; set; }
      
       }
      

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多