ModelState.IsValid возвращает FALSE, поскольку поле автоинкремента не включено - PullRequest
0 голосов
/ 18 января 2011

У меня есть две структурно идентичные таблицы, каждая из которых имеет простые формы Создать и Обновить.Одна из таблиц прекрасно работает как при обновлении, так и при добавлении новых строк ... Другая таблица отлично работает при обновлении, но не может пройти мимо ModelState.IsValid при создании новой строки.

Мне далисообщение об ошибке, которое говорит, что поле 'ID' должно быть включено, даже если это автоинкрементный первичный ключ.Я также попытался передать нулевое значение, но это тоже не сработало.

Насколько я могу судить, оба моих первичных ключа настроены одинаково, и они оба используют модель LINQ to Entities.

 [HttpPost]
    public ActionResult CreateProduct(Product product)
    {
        if (ModelState.IsValid)
        {
            productrepository.Add(product);
            productrepository.Save();

            return RedirectToAction("ProductList");
        }
        return View();
    }

Есть предложения?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Исключить идентификатор с атрибутом привязки:

[HttpPost]
public ActionResult Create([Bind(Exclude="ID")]CompanyAddress companyAddress)
{
    if (ModelState.IsValid)
0 голосов
/ 18 января 2011

Я изменил имя моего автоинкрементного столбца с «ID» на «AutoID», и теперь, похоже, оно работает.

Это было единственное различие, которое я мог найти между двумя таблицами, поэтому я предполагаю, что либо моя модель должна была быть обновлена, либо использование 'ID' подразумевало что-то непреднамеренное.

Я до сих пор не уверен, почему это не сработало, я просто рад, что оно сработало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...