假设我想使用 an EditForm,但我希望每次用户在控件中键入时触发值绑定,而不是仅在模糊时触发。
举个例子,假设我想要一个InputNumber<int>能做到这一点的东西?我尝试过使用不同的方法,但bind-Value:event="oninput"没有成功。InputNumber通过复制 AspNetCore 源代码并覆盖/重写一些东西,我终于能够或多或少地获得我想要的东西。
这是我的InputNumber<int>,它实现了我所希望的:
public class MyInputNumber: InputNumber<int>
{
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenElement(0, "input");
builder.AddAttribute(1, "step", "any");
builder.AddMultipleAttributes(2, AdditionalAttributes);
builder.AddAttribute(3, "type", "number");
builder.AddAttribute(4, "class", CssClass);
builder.AddAttribute(5, "value", FormatValue(CurrentValueAsString));
builder.AddAttribute(6, "oninput", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
builder.CloseElement();
}
// Copied from AspNetCore - src/Components/Components/src/BindConverter.cs
private static string FormatValue(string value, CultureInfo culture = null) => FormatStringValueCore(value, culture);
// Copied from AspNetCore - src/Components/Components/src/BindConverter.cs
private static string FormatStringValueCore(string value, CultureInfo culture)
{
return value;
}
}
oninput请注意,序列 6 项中的“ ”是从基础方法onchange中的“”更改而来的。我想知道如何:InputNumberBuildRenderTree
查看 的输出BuildRenderTree
,以便我知道如何使用 Razor 和/或
只是大致知道什么样的 Razor 语法相当于将来执行此操作。
我从 AspNetCore 代码中的注释中了解到,这绝对不是执行此类操作的首选方法,而 Razor 是首选方法。EditContext
我已经通过订阅的 来测试这在 .NET Core 3 Preview 7 ASP.NET Core Hosted Blazor 中是否有效,OnFieldChangedEvent
并且可以看到,通过这种方法,我获得了我正在寻找的不同行为。希望有更好的方法。
慕码人8056858
慕无忌1623718
HUWWW
holdtom
一只名叫tom的猫
开满天机
相关分类