Blazor EditForm和流利的验证

大卫·S

只需将一个基于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?

本杰明

我认为这很有趣,因此在InputText这里查看了GitHub的ASP .NET Core项目上Blazor的源代码

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
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章