Как динамически установить свойство 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; }
}