Поведение DateTimePicker в ASP.NET MVC с использованием EF Core [C#]C#

Место общения программистов C#
Ответить
Anonymous
 Поведение DateTimePicker в ASP.NET MVC с использованием EF Core [C#]

Сообщение Anonymous »


В настоящее время я столкнулся с неожиданным поведением средства выбора даты и времени в моем проекте ASP.NET. Я использую ViewModel PartyViewModel для действий Create и Edit, в то время как модель Party, которая была создана с использованием EF Ядро предназначено только для чтения и передачи данных в PartyViewModel.

В представлении Edit.cshtml данные для свойства Date не отображаются в DateTimePicker, в то время как другие свойства отображаются правильно.

Значение даты не отображается в DateTimePicker

Мои сведения о .csproj:
[*].NET 7 [*]ASP.NET Core MVC [*]Ядро EntityFramework [*]Локальная база данных SQL Server [*]Идентификация ASP.NET
Мое действие Изменить в PartiesController.cs:

// GET: Admin/Parties/Edit/5 общедоступная асинхронная задача Edit (int? id) { если (идентификатор == ноль) { вернуть NotFound(); } вар party = ждут _context.Parties.FindAsync(id); если (партия == ноль) { вернуть NotFound(); } PartyViewModel vm = новая PartyViewModel (партия); вернуть просмотр (ВМ); } // ПОСТ: Администратор/Стороны/Редактировать/5 [HttpPost] [ВалидатеАнтиФоржериТокен] public async Task Edit(int id, [Bind("PartyName,Quantity,Date,Time,Location,Note,Status,HasMenu,PartyTypeId,CustomerId")] PartyViewModel вм) { вар party = ждут _context.Parties.FindAsync(keyValues: id); если (партия == ноль) { вернуть NotFound(); } если (ModelState.IsValid) { пытаться { _context.Entry(партия).State = EntityState.Modified; // другой реквизит... вечеринка!.Дата = vm.Date; вечеринка!.Time = vm.Time; // другой реквизит и посторонние предметы... _context.Update(партия); // Сохранить изменения ждут _context.SaveChangesAsync(); } улов (DbUpdateConcurrencyException) { если (!PartyExists(party.PartyId)) { вернуть NotFound(); } еще { бросать; } } вернуть RedirectToAction(nameof(Index)); } вернуть просмотр (ВМ); } Мое представление Edit.cshtml:

@model ASP.NET_Core_Website_QuanLyTiecCuoiLanHue.Areas.Admin.ViewModels.PartyViewModel @{ ViewData["Title"] = "Чуть позже"; } @ViewData["Title"] / @Model.PartyName @Html.TextBoxFor(model => model.Date, new { @class = "form-control", @type = "datetime-local"}) Мой PartyViewModel:

[Без ключа] публичный класс PartyViewModel { // Дата [DataType(DataType.Date, ErrorMessage = "{0} Khong hợp lệ")] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] // еще аннотации ... публичный DateTime? Дата { получать; набор; } // Время публичный TimeSpan? Время {получить; набор; } // другой реквизит... // Конструкторы общественная PartyViewModel() { } public PartyViewModel (Вечеринка): this() { // другой реквизит... Дата = вечеринка.Дата!; Время = вечеринка.Время; // другой реквизит... } public Party ToParty (контекст QlDichVuNauTiecLanHueContext) { вернуть новую вечеринку() { // другой реквизит... Дата = Дата, Время = Время, // другой реквизит... // Посторонние объекты PartyType = context.PartyTypes.Find(PartyTypeId) ?? новый PartyType(), Клиент = context.Customers.Find(CustomerId) ?? новый клиент(), }; } } Моя модель Party:

[DisplayName("Tiệc")] общественная партия частичного класса { // другой реквизит... [DataType(DataType.Date, ErrorMessage = "{0} Khong hợp lệ")] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] // еще аннотации ... публичный DateTime? Дата { получать; набор; } публичный TimeSpan? Время { получать; набор; } общественный виртуальный клиент Клиент {get; набор; } = ноль!; общедоступные виртуальные ICollection Счета-фактуры {get; набор; } = новый список(); общественный виртуальный PartyType PartyType {получить; набор; } = ноль!; общественный виртуальный ICollection Works {get; набор; } = новый Список(); } После проверки я обнаружил, что данные из объекта сущности Party из DbContext успешно передаются в PartyViewModel, и я могу просмотреть их в консоль (красный текст)

Данные отображаются в консоли

Я попытался изменить тип отображения с типа ввода (тег или @Html.TextBoxFor) на обычный текст @Html.DisplayFor, и отображаются данные даты.

Как мне улучшить ситуацию?

Это проблема дизайна модели/объектных отношений или что-то еще?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»