Как обработать свойство преобразования единиц в модели ASP.Net Core MVC?
Допустим, у вас есть свойство модели, подобное этому:
[Display(Name = "Length (ft)"]
public double LengthFt {get; set;}
Теперь вам нужно другое свойство с длиной в метрах, которое будет использоваться в ваших формах ввода и вывода:
[Display(Name = "Length (m)"]
[NotMapped]
public double LengthMeters
{
get => LengthFt * 0.3048;
set => LengthFt = value / 0.2048;
}
Должно ли это работать? Мой (гораздо более сложный пример, чем этот) работает над частью "get" (правильно возвращает LengthMeters, когда LengthFt установлен) и работает над формой Create (стандартное представление Create из ASP.Net Core MVC), но не работает на Edit. Форма Edit показывает правильное начальное значение, но когда я перезаписываю его и нажимаю "Сохранить", оба поля теперь равны 0. Как будто Edit не видит изменения элемента NotMapped, а действие Create.
Есть ли более элегантный способ обработки этих типов преобразований?
1 ответ
"LengthMeters" был опущен в команде Bind метода Edit в контроллере. При правильной привязке эта техника работает нормально.
Все еще задаюсь вопросом, есть ли более элегантный способ сделать это, но, похоже, он работает сейчас.