关闭嵌套 blazor 自定义控件上的验证

问题描述 投票:0回答:1

这是针对 .NET 8 Blazor Web 应用程序的。

我有一个带有编辑器模板的网格,如下所示:

<EditorTemplate>
@{
    CurrentlyEditedItemSupplier = (context as ItemSupplier)!;

    <HiSS.Body.Components.Custom.ItemSelector Items="@Items" CurrentItemSupplier="@CurrentlyEditedItemSupplier" Categories="@Categories" />

    <TelerikValidationTooltip For="@(() => CurrentlyEditedItemSupplier.ItemId)"
                                TargetSelector="#Item-field"
                                Position="@TooltipPosition.Bottom">
    </TelerikValidationTooltip>
    
} 

它包含一个具有 3 个组合框的自定义控件 (ItemSelector)。第一个是类别选择器,用于将项目记录过滤到较小的子集,另外两个链接到项目并显示其中的不同字段,允许用户从 ID 号或描述中进行选择。父网格绑定到 ItemSupplier 类型的对象。它不包含绑定到第一个组合框中的类别 ID。另外两个绑定到对象中的项目 ID。

<TelerikComboBox Id="Category-field" Data="@Categories" @bind-Value="@CurrentCategoryId" TextField="@nameof(Category.Name)" ValueField="@nameof(Category.Id)" OnChange="@FilterItems"
                 Width="39%">
    <ComboBoxSettings>
        <ComboBoxPopupSettings Class="dropdownsize;" />
    </ComboBoxSettings>
</TelerikComboBox>

<TelerikComboBox id="Item-Desc" Data="@FilteredItems" @bind-Value="@CurrentItemSupplier!.ItemId" TextField="@nameof(Item.Description)" ValueField="@nameof(Item.Id)"
                        Width="39%">
    <ComboBoxSettings>
        <ComboBoxPopupSettings Class="dropdownsize;" />
    </ComboBoxSettings>
</TelerikComboBox>

<TelerikValidationTooltip For="@(() => CurrentItemSupplier.ItemId)"
                      TargetSelector="#Item-Desc"
                          Position="@TooltipPosition.Bottom">
</TelerikValidationTooltip>

<TelerikComboBox id="Item-ItemNo" Data="@FilteredItems" @bind-Value="@CurrentItemSupplier!.ItemId" TextField="@nameof(Item.ItemNo)" ValueField="@nameof(Item.Id)"
                    Width="20%">
    <ComboBoxSettings>
        <ComboBoxPopupSettings Class="dropdownsize;" />
    </ComboBoxSettings>
</TelerikComboBox>

<TelerikValidationTooltip For="@(() => CurrentItemSupplier.ItemId)"
                      TargetSelector="#Item-ItemNo"
                          Position="@TooltipPosition.Bottom">
</TelerikValidationTooltip>

类别纯粹用于过滤项目以向用户提供较小的列表。不幸的是,验证不喜欢它存在,因为它不存在于验证模型中。如果我注释掉类别组合框,一切正常,但项目列表太大。如何进行验证以忽略自定义控件中的类别组合框?

c# blazor telerik fluentvalidation
1个回答
0
投票

结果非常简单 - 我所要做的就是将有问题的控件包装在它自己的编辑表单中:

<EditForm Model="@dummymodel">
    <TelerikComboBox Id="Category-field" Data="@Categories" @bind-Value="@CurrentCategoryId" TextField="@nameof(Category.Name)" ValueField="@nameof(Category.Id)" OnChange="@FilterItems" >
        <ComboBoxSettings>
            <ComboBoxPopupSettings Class="dropdownsize;" />
        </ComboBoxSettings>
    </TelerikComboBox>
</EditForm>

虚拟模型定义为:

private object dummymodel = new object();

而且效果很好...

© www.soinside.com 2019 - 2024. All rights reserved.