Validation 子组件上的Ant design blazor验证未显示验证消息

Validation 子组件上的Ant design blazor验证未显示验证消息,validation,blazor,ant-design-blazor,Validation,Blazor,Ant Design Blazor,我正在使用Ant design Blazor,试图创建一个子组件,并像往常一样从父组件应用验证。下面是我的代码 子组件 <AntDesign.FormItem Label="@Label"> <AntDesign.InputNumber Step="Step" Min="Min" @bind-Value="@Amount" OnChange="OnAmountChanged&quo

我正在使用Ant design Blazor,试图创建一个子组件,并像往常一样从父组件应用验证。下面是我的代码

子组件

<AntDesign.FormItem Label="@Label">
    <AntDesign.InputNumber Step="Step" Min="Min" @bind-Value="@Amount" OnChange="OnAmountChanged" 
    TValue="double?" />    
</AntDesign.FormItem>

@code {
[Parameter]
public string Label { get; set; }

[Parameter]
public double Step { get; set; }

[Parameter]
public double Min { get; set; } = double.MinValue;

[Parameter]
public double Max { get; set; } = double.MaxValue;

[Parameter]
public string Placeholder { get; set; }

[Parameter]
public double? Amount { get; set; }

[Parameter]
public EventCallback<double?> AmountChanged { get; set; }

private async Task OnAmountChanged(double? value)
{
    await AmountChanged.InvokeAsync(value);
}
}
<AntDesign.Content>
    <AntDesign.Form LabelColSpan="8"
                WrapperColSpan="16"
                Model="@exchangeRate"
                OnFinish="@OnFinish"
                OnFinishFailed="@OnFinishFailed">
    <Validator>
        <FluentValidator TValidator="ExchangeRateValidator" />
    </Validator>
    <ChildContent>
        <AntDesign.FormItem Label="Rate">
            <AntDesign.InputNumber Step="0.1" Min="0" @bind-Value="context.Rate" Formatter="RateFormat" />
        </AntDesign.FormItem>

        <FormItem Label="Date">
            <DatePicker TValue="DateTime?" Format="yyyy/MM/dd" @bind-Value="context.Date">
            </DatePicker>
        </FormItem>

        <InputNumberComponent Label="Rate" @bind-Amount="context.Amount"></InputNumberComponent>

        <Button Type="primary" HtmlType="submit">Submit</Button>
    </ChildContent>
    </AntDesign.Form>
</AntDesign.Content>

@代码{
[参数]
公共字符串标签{get;set;}
[参数]
公共双步骤{get;set;}
[参数]
public double Min{get;set;}=double.MinValue;
[参数]
public double Max{get;set;}=double.MaxValue;
[参数]
公共字符串占位符{get;set;}
[参数]
公共双倍?金额{get;set;}
[参数]
public EventCallback AmountChanged{get;set;}
已更改的专用异步任务(双值)
{
wait AmountChanged.InvokeAsync(值);
}
}
父组件

<AntDesign.FormItem Label="@Label">
    <AntDesign.InputNumber Step="Step" Min="Min" @bind-Value="@Amount" OnChange="OnAmountChanged" 
    TValue="double?" />    
</AntDesign.FormItem>

@code {
[Parameter]
public string Label { get; set; }

[Parameter]
public double Step { get; set; }

[Parameter]
public double Min { get; set; } = double.MinValue;

[Parameter]
public double Max { get; set; } = double.MaxValue;

[Parameter]
public string Placeholder { get; set; }

[Parameter]
public double? Amount { get; set; }

[Parameter]
public EventCallback<double?> AmountChanged { get; set; }

private async Task OnAmountChanged(double? value)
{
    await AmountChanged.InvokeAsync(value);
}
}
<AntDesign.Content>
    <AntDesign.Form LabelColSpan="8"
                WrapperColSpan="16"
                Model="@exchangeRate"
                OnFinish="@OnFinish"
                OnFinishFailed="@OnFinishFailed">
    <Validator>
        <FluentValidator TValidator="ExchangeRateValidator" />
    </Validator>
    <ChildContent>
        <AntDesign.FormItem Label="Rate">
            <AntDesign.InputNumber Step="0.1" Min="0" @bind-Value="context.Rate" Formatter="RateFormat" />
        </AntDesign.FormItem>

        <FormItem Label="Date">
            <DatePicker TValue="DateTime?" Format="yyyy/MM/dd" @bind-Value="context.Date">
            </DatePicker>
        </FormItem>

        <InputNumberComponent Label="Rate" @bind-Amount="context.Amount"></InputNumberComponent>

        <Button Type="primary" HtmlType="submit">Submit</Button>
    </ChildContent>
    </AntDesign.Form>
</AntDesign.Content>

提交
可以看出,我使用@bind Amount直接将Amount的值绑定到组件。但是,当我单击Submit按钮时,它会触发验证,并在前两个字段上显示验证消息,而不是在子组件上


有什么建议吗?

我的一位同事能帮我解答这个问题。我们必须研究蚁族设计Blazor的源代码,以便找出发生了什么并得到答案。为了获取验证消息,Ant依赖于EditContext中的验证消息,但使用Any输入控件的FieldIdentifier检索它们

FieldIdentifier是由Ant使用控件的ValueExpression而不是值创建的。当我们从子控件设置值时,作为值表达式,反过来,在查找验证消息时,它根据搜索错误消息,而不是实际的模型字段


绑定到子属性时,将ValueExpression设置为绑定表达式修复了该问题。

您是否可以共享您的修复?