Blazor (MudBlazor) MudNumericField 在没有输入值时一直返回 0

问题描述 投票:0回答:1

我有一个 .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);
            }
        }
    
    }
blazor
1个回答
0
投票

我不确定这是否对某人有帮助。 就我而言,它在添加可为空的 T 时有所帮助。

例如:

<MudNumericField T="decimal?"
                 Label="From Amount" Variant="Variant.Text"
                 HideSpinButtons="true" />
© www.soinside.com 2019 - 2024. All rights reserved.