在Blazor WASM中获取DateTime输入

时间:2020-09-11 19:58:53

标签: c# datetime razor blazor

我正在尝试将“会议数据”作为用户的输入。

我有一个这样的模态:

div class="simple-form">
    <EditForm Model="meeting" OnValidSubmit="SubmitForm">
        <DataAnnotationsValidator />

        <div class="form-group">
            <label>Location</label>
            <InputText @bind-Value="meeting.Location" class="form-control" placeholder="Adres Giriniz" />
            <ValidationMessage For="@(() => meeting.Location)" />
        </div>
        <div class="form-group">
            <label>Date</label>
            <InputDate @bind-Value="meeting.Date" />
            <ValidationMessage For="@(() => meeting.Date)" />
        </div>



        <button type="submit" class="btn btn-primary">Submit</button>
        <button @onclick="Cancel" class="btn btn-secondary">Cancel</button>
    </EditForm>
</div>

@code {

    Meetings meeting = new Meetings();
    ...

此模型将meeting对象返回主页,并将其发布到数据库:

Meetings meeting;

    async Task ShowModal()
    {
        var MeetingModal = Modal.Show<MeetingRequestComponent>();
        var result = await MeetingModal.Result;

        if (!result.Cancelled)
        {
            meeting = (Meetings)result.Data;
            meeting.ReceiverId = id;
            meeting.SenderId = _userId;
            await http.PostAsJsonAsync("api/Meetings", meeting);
        }
    }

日期信息模型仅为DateTime

    public DateTime Date { get; set; }

但是我无法获取时间信息。

  • 我尝试使用<input type="datetime" bind="meeting.Date">,但是没有用。我不能同时使用日期和时间值。它丢弃给定的时间值,并将其设置为12:00:00 AM

  • 我尝试仅在数据库中为“小时和分钟数据”创建另一列,但它要求输入bytes[]

预期行为:

DatePicker

像这样的日期选择器和时间选择器(“ HH:mm”)

如何获取时间信息?

如何为日期设置初始值? (这是有问题的,因为我收到一些错误消息,说我不能将Value与@ bind-Value一起使用)

1 个答案:

答案 0 :(得分:1)

<InputDate>组件仅处理创建<input type='date' ...标记(请参阅原始的Blazor code

如果要输入/编辑日期时间组合,则需要自己滚动。

此注释中的代码应正常工作: https://github.com/dotnet/aspnetcore/issues/18078#issuecomment-626997904

正如我在评论中提到的,要设置初始值,您需要在创建绑定对象时对此进行编码,例如

   Meetings meeting = new Meetings() { Date = DateTime.Now };