David_Wimbley
Я не думаю, что это имеет какое-то отношение к первичному ключу, если только вы не говорите, что DepartmentId-это первичный ключ.
Мое предложение состояло бы в том, чтобы добавить в ваш DropDownListFor data опцию по умолчанию "Select" и установить значение этого Select равным 0. Поскольку ваше поле является целым числом и предполагает, что оно требуется как таковое в базе данных, то оно все равно будет равно 0. Если 0-это возможное значение, то установите его равным...-1.
Таким образом, ваш код будет выглядеть следующим образом
var selectData = new List<SelectListItem>();
selectData.Add(new SelectListItem { Text ="Select", Value = "-1"});
selectData.Add(new SelectListItem { Text ="Actual Selection", Value = "Actual Value"});
@Html.DropDownListFor(m=>m.DepartmentID, selectData, new{@class=""})
Таким образом, если выбор не сделан, вы знаете, что -1 означает, что они не выбрали никаких значений.
Другой вариант-передать его как -1, а когда проверка выполняется, использовать оператор коалесцирования null, чтобы по умолчанию значение равнялось 0, если то, что приходит из модели, равно null.
Экс:
var safeDeptId = (DepartmentID ?? 0);
Таким образом, если ни один параметр не был выбран, ваш дефолт равен 0 и не должен получить ошибку, указывающую на отсутствие приведения.
Просто несколько идей о том, как решить вашу проблему.
Member 10754595
извините не получилось
получил ошибку ниже.
Оператор INSERT конфликтует с ограничением внешнего ключа "FK_dbo.Documents_dbo.Departments_DepartmentID". Конфликт произошел в базе данных "азбуки", таблица "dbo.Департаменты", столбец 'идентификатор'.
Заявление было прекращено.
David_Wimbley
Я бы сказал, что то, что я описал, действительно сработало, так как теперь вы получаете ошибку, пытаясь вставить данные в свою базу данных, которая отделена от того, о чем вы сначала спросили.
Я ничего не знаю о вашей структуре таблицы и не имею доступа к вашему коду, но мне кажется, что ошибка довольно очевидна. У вас есть ограничение внешнего ключа, которое требует выбора DepartmentId.
Либо добавьте опцию в таблицу отделов "Не выбрано", которая предоставит вам действительный идентификатор для вставки в таблицу документов, либо покиньте отдел по мере необходимости. Если вы все еще не можете оставить его как требуется, и вы не хотите вставлять опцию в таблицу отделов как "не выбранную", то вам нужно пересмотреть структуру вашей таблицы, потому что вы не сможете сделать DepartmentId необязательным с внешним ключом в вашей БД, что делает его обязательным. Здесь левая рука должна говорить с правой.