asp.net mvc: связывание сложных объектов - PullRequest
0 голосов
/ 27 августа 2010
  1. рассмотрим классический пример: продукт и категория
  2. Редактирование продукта
  3. в выпадающем идентификаторе категории выбранный - Категория сопоставлена как объект со всеми полями пустыми кроме Id
  4. при отправке формы редактирования продукта - Проверка выдает ошибку: «Категория Имя обязательно "(У меня есть Требуется атрибут на имя категории свойство)

Как бороться с такими ошибками, если я хочу использовать встроенную проверку (if (!ModelState.IsValid))? На ум приходит написание пользовательских связывателей данных, которые бы заполняли все такие объекты только для id значениями из базы данных.

Есть ли у вас другие решения этой проблемы?

1 Ответ

1 голос
/ 27 августа 2010

Вам необходимо вернуть отредактированный продукт и идентификатор категории.Затем в вашем контроллере / хранилище получите категорию из переданного идентификатора категории и установите категорию в качестве категории продукта.

Поскольку категория возвращается из БД (или где-либо еще), все свойства должны быть пропилуляторами, поэтому вы не должны получать «Имя категории обязательно»

Быстрый пример того, что я имею в виду

[HTTPost]
public ActionResult Save(Product product, int? categoryId)
{
  Category category = GetCategory(categoryID);

  product.Category = category;

  if (ModelState.IsValid)
  {
    // Save etc.
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...