C# Blazor и привязка данных к DateTime? - PullRequest
0 голосов
/ 22 февраля 2020

Я должен добавить проверку данных для полей ввода даты и времени для существующего Asp. net Core 3.1 Blazor проекта; Я впервые работаю с Blazor.

У меня есть привязка данных настройки в поле ввода даты (в котором есть средство выбора даты и данные, связанные с переменной DateTime) без проблем. Тем не менее, случай не совпадает с вводом времени (который имеет выбор времени и связан с другой переменной DateTime.)

Короче говоря, когда пользователь использует выбор времени для установки времени и закрывает его время в поле ввода возвращается к тому времени, когда оно было изначально установлено. Например, если ввод времени в настоящее время установлен в 12:00, а затем пользователь выбирает новое время из палитры времени (скажем, в 2:00 пополудни), пользователь нажимает кнопку ОК и закрывает палитру времени, время на входе возвращается в 12:00. У меня есть другой ввод времени на той же странице, но данные привязаны к строке вместо DateTime, и если время снова устанавливается в палитре времени, время сохраняется.

Я написал очень короткую программу, чтобы продемонстрировать проблему. Моя примерная страница имеет три поля ввода: Дата, Время и другое Время, но ее данные привязаны к строке.

enter image description here

@page "/"

<h1>Hello, world!</h1>

Welcome to your new app.

<div class="wrapper">
  <section class="createevent">
    <EditForm EditContext="@_editContext" OnValidSubmit="@HandleValidSubmit" OnInvalidSubmit="@HandleInvalidSubmit">
      <DataAnnotationsValidator />
      <div class="form-group">
        <p>
          <label>
            Date:
          </label>
          <input id="txtDate" type="date" required @bind-value="_timeSample.date" />
          <ValidationMessage For="@(() => _timeSample.date)" />
        </p>
      </div>
      <div class="form-group">
        <p>
          <label>
            Time:
          </label>
          <input id="txtTime" type="time" required @bind="_timeSample.time" />
          <ValidationMessage For="@(() => _timeSample.time)" />
        </p>
      </div>
      <div class="form-group">
        <p>
          <label>
            Time2:
          </label>
          <InputText id="txtTime2" type="time" required @bind-Value="_timeSample.text" />
          <ValidationMessage For="@(() => _timeSample.text)" />
        </p>
      </div>
    </EditForm>
  </section>
</div>

@code
{
  public class TimeSample
  {
    public DateTime date { get; set; }
    public DateTime time { get; set; }
    public string text { get; set; }
  };

  private EditContext _editContext;
  private TimeSample _timeSample = new TimeSample();

  protected override void OnInitialized()
  {
    _editContext = new EditContext(_timeSample);
  }

  private void HandleValidSubmit()
  {
  }

  protected void HandleInvalidSubmit()
  {
  }

}

1 Ответ

1 голос
/ 22 февраля 2020

Какой браузер вы используете? Я запустил ваш код с Chrome и не смог воспроизвести проблему ... Я не думаю, что она связана с Blazor, а скорее с браузером, который вы используете. Пожалуйста, попробуйте свой код с другим браузером

надеюсь, это поможет ...

...