Как динамически установить свойство TValue компонента InputNumber

Мы можем назначить и повторно использовать TValue с помощью typeparam на платформе Blazor. Но как мы будем динамически назначать TValue для компонента Blazor InputNumber?

пример кода:

[index.razor]

      <EditForm>

      @*The below definiton is working*@
      <InputNumber TValue="int?" @bind-Value="@DynamicModelInstance.ValueAsT"></InputNumber>
       @*The below definiton is not working*@
    <InputNumber TValue="DynamicModelInstance.Type" @bind-Value="@DynamicModelInstance.ValueAsT"></InputNumber>
</EditForm>
@code {
    public DynamicModel<int> DynamicModelInstance { get; set; }

    protected override void OnInitialized()
    {
        DynamicModelInstance = new DynamicModel<int>();
        DynamicModelInstance.ValueAsT = 500;
    }
}

[DynamicModel.cs]

      namespace CustomComponent.Pages
{
public class DynamicModel<T> where T : struct
{
    public System.Type Type { get; set; }
    public bool Enabled { get; set; }

    public DynamicModel()
    {
        this.Type = typeof(T);
    }

    private T _value;

    public T ValueAsT
    {
        get { return (T)_value; }
        set { this._value = value; }
    }
}
}

Как добиться этого?

1 ответ

Проблема заключалась в вашей EditForm:

EditForm требует либо параметра Model, либо параметра EditContext.

      <EditForm Model="dynamicModelInstance">
    <InputNumber @bind-Value="@dynamicModelInstance!.Value" />
</EditForm>
@code {
    public DynamicModel<int>? dynamicModelInstance;

    protected override void OnInitialized()
    {
        dynamicModelInstance = new()
        {
            Value = 500
        };
    }
}
      public class DynamicModel<T> where T : struct
{
    public T Value { get; set; }
}

Другие вопросы по тегам