我将 Blazorise 与服务器端 Blazor 应用程序一起使用。当我尝试将 Blazorise 输入组件包装在自定义组件中时,验证消息停止工作。
我的意思是,当我单击“提交”时,我在具有无效值的字段下没有看到任何错误消息。如果我不包装 Blazorise 输入并单击“提交”,我会看到错误消息。
这是一个例子。该表单包含相同字段两次。一个包裹在我的自定义组件内TextField
,另一个打开。
<Form>
<Validations @ref="@fluentValidations" Mode="ValidationMode.Manual" Model="AccountDto" HandlerType="typeof(FluentValidationHandler)">
<TextField Label="Name" @bind-Text="@Account.Name" />
<Validation>
<Field>
<FieldLabel For="account-name-input">Name</FieldLabel>
<TextEdit ElementId="account-name-input" @bind-Text="@Account.Name">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
</Validations>
<Field>
<Button Type="ButtonType.Submit"
PreventDefaultOnSubmit
Clicked="Submit">
Submit
</Button>
</Field>
</Form>
后面的代码包含以下表单内容(我遗漏了很多废话):
private Validations fluentValidations = null!;
private async Task Submit()
{
if (await fluentValidations.ValidateAll())
await CreateAccount(Account);
}
自定义组件看起来像。(文件背后的代码不包含任何有趣的内容):
<Validation>
<Field>
<FieldLabel For="@GetInputId()">
@Label
</FieldLabel>
<TextEdit ElementId="@GetInputId()"
Text="@Text"
TextChanged="TextChanged"
Disabled="@Disabled">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
我知道验证工作正常,因为错误确实出现在展开的组件中,但不会出现在我的组件中。