我有一个表单,这是可能的一些表单元素(MudBlazor组件),可以被禁用.
问题是,当该字段被禁用时,我不希望发生任何验证,因为我发送的是NULL,而不是该字段值.
但当文本字段被启用时(这取决于用户使用复选框来启用或禁用该字段),我想要验证发生.
但是,如果取消选中该复选框并禁用该字段,则验证仍然有效.我希望当该字段被禁用时,不会发生任何验证.如何做到这一点?
我同时在每个字段上使用了连贯验证(对于字符串长度)和isRequired=true属性.
我有一个表单,这是可能的一些表单元素(MudBlazor组件),可以被禁用.
问题是,当该字段被禁用时,我不希望发生任何验证,因为我发送的是NULL,而不是该字段值.
但当文本字段被启用时(这取决于用户使用复选框来启用或禁用该字段),我想要验证发生.
但是,如果取消选中该复选框并禁用该字段,则验证仍然有效.我希望当该字段被禁用时,不会发生任何验证.如何做到这一点?
我同时在每个字段上使用了连贯验证(对于字符串长度)和isRequired=true属性.
为禁用的输入添加一个布尔属性到您的Formmodel中.
public class OrderModel
{
public string Name { get; set; }
public bool IsNameDisabled {get; set;}
}
并使用它来禁用/启用输入
<MudTextField
@bind-Value="model.Name"
Disabled="model.IsNameDisabled"
For="@(() => model.Name)"
Immediate="true"
Label="Name"
/>
然后,您可以将该属性包括在流畅验证中,以便只有在输入未禁用时才会验证该名称.
RuleFor(x => x.Name).Must(x => !string.IsNullOrEmpty(x)).When(x => !x.IsNameDisabled)
或者,如果您想将其设置为内联,您可以
<MudTextField
@bind-Value="model.Name"
Disabled="model.IsNameDisabled"
Required="!model.IsNameDisabled"
For="@(() => model.Name)"
Immediate="true"
Label="Name"
/>