【问题标题】:Taking DateTime input in Blazor WASM在 Blazor WASM 中获取 DateTime 输入
【发布时间】:2020-09-11 19:58:53
【问题描述】:

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

我有一个这样的模态:

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; }

但我无法获得时间信息。

  • 我尝试使用&lt;input type="datetime" bind="meeting.Date"&gt;,但它不起作用。我不能同时获取日期和时间值。它丢弃给定的时间值并设置为 12:00:00 AM

  • 我尝试在数据库中创建仅用于小时和分钟数据的另一列,但它要求bytes[]

预期行为:

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

如何将时间信息作为输入?

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

【问题讨论】:

  • 您可以在创建值时通过设置meeting.Date来设置初始值,例如Meetings meeting = new Meetings() { Date = DateTime.Today };

标签: c# datetime razor blazor


【解决方案1】:

&lt;InputDate&gt; 组件仅处理创建&lt;input type='date' ... 标记(参见原始Blazor code

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2022-10-01
    • 2023-03-28
    • 2021-04-19
    • 2021-10-22
    • 2022-11-26
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多