gpt4 book ai didi

c# - Blazor EditForm 和 Fluent 验证

转载 作者:行者123 更新时间:2023-12-02 03:17:06 27 4
gpt4 key购买 nike

只需基于 EditForm 并使用 Fluent Validation 组合一个包装器即可。我在此表单上创建了两个属性,如下所示:

if (ModelValidation)
{
editContext.OnValidationRequested +=
(sender, eventArgs) => ValidateModel((EditContext)sender, messages);
}

if (FieldValidation)
{
editContext.OnFieldChanged +=
(sender, eventArgs) => ValidateField(editContext, messages, eventArgs.FieldIdentifier);
}

这允许在 OnFieldChanged(值更改,在退出字段上验证)或按下提交按钮时进行验证(OnValidationRequested)

但是,如果我说一个文本字段为空(应该是非空)选项卡,则 OnFieldChanged() 处理程序不会触发...(字段没有更改并不奇怪)。有没有办法强制调用 OnFieldChanged() 或终止焦点处理程序而不诉诸 JavaScript?

最佳答案

我觉得这很有趣,所以我在 GitHub 的 ASP .NET Core 项目上查看了 Blazor 的 InputText 类的源代码:

https://github.com/dotnet/aspnetcore/blob/master/src/Components/Web/src/Forms/InputText.cs

您会注意到只有一个事件处理程序,它用于当用户更改文本框中的值时浏览器引发的 onchange 事件。

builder.AddAttribute(4, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));

您要订阅的事件是onblur,当用户单击或跳出某个字段时会引发该事件,无论他们是否更改了该字段,并且尚未完成。

我在InputText或InputBase(InputText派生自)中的任何地方都找不到它,但它在某个地方,因为这似乎有效:

@page "/"
<InputText @onblur="DoSomething" />

@code
{
private void DoSomething()
{ // Your logic here
}
}

关于c# - Blazor EditForm 和 Fluent 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61208437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com