我有一个 .razor 页面 Test.razor,我添加了一个名为 HTMLTextBoxOrLabel.razor 的自定义剃刀组件
如果用户没有输入值,我无法让 EventCallback 返回空白值(它将始终返回 0)
问题: 当我向 MudNumericField 添加值时,一切正常,并且收集 MudNumericField 中的值并更新数据库,但是当我将 MudNumericField 清除为空值时,它将始终返回值“0”(零)。我不想要零,如果用户不想有值,那么我希望它返回空白(空)。
这可能吗?
编辑……。或者有没有更好的方法来代替使用EventCallBack在父子剃刀组件之间进行通信?
测试.剃刀
<EditForm Model="@businessClass"
OnValidSubmit="@OnValidSubmit"
OnInvalidSubmit="@HandleInvalidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<HTMLTextBoxOrLabel
MaxLength="5"
@bind-BindToSmallInt=
"@text_I_am_pushing_from_codebehind.order_by"
</EditForm>
@code
{
private void OnValidSubmit(EditContext context)
{
bool IsValid = context.Validate();
if (IsValid)
{
// This is where I keep getting the value 0 instead of blank (null)
if (this.businessClass.Update())
{
}
}
}
}
HTMLTextBoxOrLabel.razor
<MudNumericField @bind-Value="@BindToSmallInt" T="Int16?" MaxLength="@MaxLength" />
@code
{
[Parameter] public int MaxLength { get; set; }
private Int16 _BindToSmallInt;
[Parameter] public EventCallback<Int16> BindToSmallIntChanged { get; set; }
[Parameter]
public System.Nullable<Int16> BindToSmallInt
{
get => _BindToSmallInt;
set
{
if (_BindToSmallInt == value) return;
BindToSmallIntChanged.InvokeAsync(value.Value);
}
}
}
我不确定这是否对某人有帮助。 就我而言,它在添加可为空的 T 时有所帮助。
例如:
<MudNumericField T="decimal?"
Label="From Amount" Variant="Variant.Text"
HideSpinButtons="true" />