如何用blazor绑定时间类型的输入

问题描述 投票:2回答:2

您好,我想将2类型的int变量绑定到min类型的maxinputtime值。我怎样才能做到这一点?我不知道要在bind字段中放置什么,因为有2个不同的变量。另外还有minmax属性。

<input type="time" min="@model.min" max="@model.max" bind=?/>

我应该在bind中放什么?

更新经过更彻底的分析,我决定我需要2个Timespan类型的变量,并将这些变量绑定到2个time类型的输入。

input binding blazor
2个回答
2
投票

您不能将TimeSpan直接绑定到Blazor中的输入,但是可以使用属性将其转换为字符串或从字符串转换为。

<input type="time" min="@model.min" max="@model.max" bind="@TimeProxy" />

@functions
{
  string TimeProxy { get => model.Time.ToString(); set => TimeSpan.TryParse(value,out model.Time); }
}

0
投票

先前的解决方案不适用于.net Core 3.1,所以我将添加一个更新的解决方案:

使用Blazor:

<EditForm Model=@model OnValidSubmit="Submit">
    <InputText type="time" @bind-Value="TimeProxy" />
</EditForm>

也需要更改代码。

@code {
    // This field is required as you can not use property in out statement
    private TimeSpan LocalTime = TimeSpan.FromHours(0);
    private string TimeProxy { 
        get => model.Time.ToString();
        set => TimeSpan.TryParse(value,out LocalTime);
    }
    private void Submit() {
        model.Time = LocalTime;
        // following submit logic...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.