ASP.MVC ModelBinding Поведение - PullRequest
       1

ASP.MVC ModelBinding Поведение

0 голосов
/ 03 февраля 2010

Это меня озадачило, несмотря на многочисленные посты здесь.

Сценарий - это базовое веб-приложение MVC (2) с простыми операциями CRUD.При отправке формы редактирования и вызове UpdateModel () возникает исключение:

System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException не обрабатывается кодом пользователя

против значения DropDownList, которое является внешним ключом в таблице сущностей.Однако в форме есть еще один список DropDownList, представляющий другой внешний ключ, который не вызывает ошибку (что неудивительно).Изменение значений свойств вручную внутри действия редактирования:

Recipe recipe = repository.GetRecipe(int.Parse(formValues["recipeid"]));
recipe.CategoryId = Convert.ToInt32(formValues["CategoryId"].ToString());
recipe.Page = int.Parse(formValues["Page"].ToString());
recipe.PublicationId=Convert.ToInt32(formValues["PublicationId"].ToString());

Позволяет обновить свойства CategoryId и Page, а затем выдается ошибка в PublicationId.Вся ссылочная целостность проверяется одинаково в БД и БД.

Любой свет, который можно пролить на это, будет приветствоваться.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

Эта ошибка не имеет ничего общего с привязкой модели. Скорее, это строго связано с LINQ to SQL. Вы можете найти разумное объяснение причин этого в этом посте .

0 голосов
/ 14 июня 2010

Измените свой код ниже

вместо

recipe.CategoryId = Convert.ToInt32(formValues["CategoryId"].ToString());

напишите это

recipe.Category = db.GetCatById(formValues["CategoryID"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...