Это происходит, когда я пытаюсь создать объект с помощью действия «Создать стиль» в Asp.Net MVC 2.
POCO обладает следующими свойствами:
public int Id {get;set;}
[Required]
public string Message {get; set}
При создании сущности Id устанавливается автоматически, поэтому в действии Create нет необходимости.
ModelState говорит, что «поле Id обязательно», но я не установил, что это так.
Здесь происходит что-то автоматическое?
РЕДАКТИРОВАТЬ - Причина раскрыта
Причину проблемы ответил Брэд Уилсон через Пола Сперанца в одном из комментариев ниже, где он говорит (аплодирует Полу):
Вы предоставляете значение для
ID, вы просто не знали, что были.
Это в данных маршрута по умолчанию
маршрут ("{controller} / {action} / {id}"),
и его значение по умолчанию является пустым
строка, которая недопустима для int.
Используйте атрибут [Bind] на вашем
параметр действия для исключения идентификатора. мой
маршрут по умолчанию был: новый {контроллер =
"Клиент", действие = "Редактировать", id = ""
} // Параметры по умолчанию
РЕДАКТИРОВАТЬ - Обновить технику модели
Я действительно изменил способ, которым я сделал это снова, используя TryUpdateModel и связанный с этим массив параметров исключения.
[HttpPost]
public ActionResult Add(Venue collection)
{
Venue venue = new Venue();
if (TryUpdateModel(venue, null, null, new[] { "Id" }))
{
_service.Add(venue);
return RedirectToAction("Index", "Manage");
}
return View(collection);
}