#asp.net-mvc #poco #model-binding
#asp.net-mvc #poco #привязка модели
Вопрос:
Я использую Entity Framework Code-First с POCOs для взаимодействия с базой данных. У меня есть необязательное поле с именем «Title».
Когда я получаю объект из формы, привязка модели по умолчанию автоматически делает «Заголовок» нулевым вместо пустого.
Как мне заставить привязку модели возвращать пустую строку вместо null?
Спасибо за любую помощь
Комментарии:
1. Почему бы не иметь дело с null в модели представления или контроллере? простой
var result = foo.title ?? string.Empty;
сделает это, нет?2. Потому что это нарушило бы DRY (не повторяйтесь.) Я получаю эту модель из нескольких мест, и мне придется повторять проверки нулевой строки во всех из них.
3. Не могли бы вы создать частичный метод (OnTitleChanging), который выполняет проверку, рекомендованную Balar? Это будет сделано в одном месте, отдельно от вашего файла edmx (чтобы он не перезаписывался) и должен выполнить то, что вам нужно.
4. Установите значение title как string . Пусто; в конструкторе вашего объекта POCO / Model.
5. @Mark, установка значения в конструкторе не поможет, поскольку связующее устройство модели по умолчанию впоследствии вызовет установщик свойства. Но вы могли бы изменить поведение конкретного установщика (если null не является возможным значением) и преобразовать null в String . Пусто.
Ответ №1:
Старый вопрос, но в MVC4 вы можете добавить это в свое свойство POCO:
[DisplayFormat(ConvertEmptyStringToNull = false)]
Комментарии:
1. Прохладный. Спасибо за публикацию этого.
Ответ №2:
Вы запрашиваете нестандартное поведение, поэтому вам нужно нестандартное решение. Расширьте привязку модели по умолчанию, переопределите ее метод CreateModel — делайте то, что вы хотите для конкретных случаев, и возвращайте base.CreateModel для других.
Не забудьте зарегистрировать его как привязку модели по умолчанию при запуске приложения.