我有多个选项卡,里面有一个表单.

<MudTabs Elevation="4" Rounded="true" Centered="true" Color="@Color.Primary">
    <MudTabPanel Text="@formA.model.Name" Style="@GetRed(formA.form?.Errors.Any())">
        <CustomForm @ref="formA" model="formA.model" />
    </MudTabPanel>
    <MudTabPanel Text="@formB.model.Name" Style="@GetRed(formB.form.Errors.Any())">
        <CustomForm @ref="formB" model="formB.model" />
    </MudTabPanel>
    <MudTabPanel Text="@formC.model.Name" Style="@GetRed(formC.form.Errors.Any())">
        <CustomForm  @ref="formC" model="formC.model" />
    </MudTabPanel>
    <MudButton OnClick="ValidateForms" >ValidateForms</MudButton>
</MudTabs>
    public async Task ValidateForms(){
        bool isValid = true;
        isValid &= await formA.Validate();
        isValid &= await formB.Validate();
        isValid &= await formC.Validate();
        if(isValid){
            // Continue
        }
    }
    public async Task<bool> Validate()
    {
        await form.Validate();
        return form.IsValid;
    }

我希望一次验证所有表单,并在发生任何验证错误时在红色边框中显示相应的结束选项卡.如果切换制表符,则应将这些字段标记为错误. 但似乎如果表单(或其字段)没有呈现,验证就会自动成功.它对激活的选项卡起作用.

代码段:https://try.mudblazor.com/snippet/GEcRlmbbTAGxcXkw

作为一种变通方法,我可以将Properties添加到FormModel中,即NameHasErrors,并手动处理所有内容,这是可行的.但我想让代码更简单.

有没有简单明了的方法?或者我必须使用变通方法?

推荐答案

您需要将KeepPanelsAlive设置为真.

MudBlazor docs

如果为True,则渲染所有选项卡并隐藏(显示:无)所有非活动的选项卡.

<MudTabs KeepPanelsAlive="true" Elevation="4" Rounded="true" Centered="true" Color="@Color.Primary">
    <MudTabPanel Text="@formA.model.Name" Style="@GetRed(formA.form?.Errors.Any())">
        <CustomForm @ref="formA" model="formA.model" />
    </MudTabPanel>
    <MudTabPanel Text="@formB.model.Name" Style="@GetRed(formB.form.Errors.Any())">
        <CustomForm @ref="formB" model="formB.model" />
    </MudTabPanel>
    <MudTabPanel Text="@formC.model.Name" Style="@GetRed(formC.form.Errors.Any())">
        <CustomForm  @ref="formC" model="formC.model" />
    </MudTabPanel>
    <MudButton OnClick="ValidateForms" >ValidateForms</MudButton>
</MudTabs>

MudBlazor Snippet

Csharp相关问答推荐

将多个enum值传递给MAUI中的转换器参数的XML语法是什么?

.NET最小API映射将T参数列表为[FromQuery]

注册通用工厂的C# Dep注入

如何创建ASP.NET Core主机并在同一进程中运行请求

一种安全的方式来存储SSH凭证(MAUI/C#应用程序)

使用客户端密钥为Fabric Rest API生成令牌

Polly使用泛型重试和重试包装函数

C#.NET依赖项注入顺序澄清

如何在不考虑年份的情况下判断日期时间是否在某个日期范围内?

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

获取具有AutoFaces的所有IOptions对象的集合

如何将此方法参数化并使其更灵活?

ASP.NET Core MVC将值从视图传递到控制器时出现问题

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

基于C#方法的EF核心过滤查询(缓冲与流)

如何使用ODP.NET C#设置Oracle会话时间长度限制

C#中使用ReadOnlySpan的泛型类型推理

从HTML元素获取 colored颜色

SharpZipLib在文件名前加上目录名,生成tar.gz

使用LibraryImport在多个dll中导入相同的函数