我有一个表单,这是可能的一些表单元素(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)

MudBlazor Snippet

或者,如果您想将其设置为内联,您可以

<MudTextField 
    @bind-Value="model.Name"   
    Disabled="model.IsNameDisabled"
    Required="!model.IsNameDisabled"                   
    For="@(() => model.Name)"
    Immediate="true"
    Label="Name" 
/>

Csharp相关问答推荐

在Dapper中使用IasyncEum重写GetAsyncEum方法

获取ASP.NET核心身份认证cookie名称

EF Core判断是否应用了AsSplitQuery()

是否可以使用EF—Core进行临时部分更新?

如何注销Microsoft帐户?

JsonSerializer.Deserialize<;TValue>;(String,JsonSerializerOptions)何时返回空?

应用程序重新启动后,EFCore列表的BSON反序列化错误

如果设置了另一个属性,则Newtonsoft JSON忽略属性

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

在DoubleClick上交换DataGridViewImageColumn的图像和工具提示

错误CS1061';AuthenticationBuilder';不包含AddOpenIdConnect的定义

ReadOnlyMemory访问基础索引的替代方案

此异步方法在重写方法中缺少等待运算符警告

将J数组转换为列表,只保留一个嵌套的JToken

C#使用相同内存的多个数组

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

当`JToken?`为空时?

如何保存具有多个重叠图片框的图片框?

如何处理ASP.NET Core中包含两个构造函数的控制器?

自定义ConsoleForMatter中的DI/Http上下文