Я получаю эту ошибку:
Значение не может быть нулевым
У меня есть модель представления, которая ссылается на несколько моделей.
В связи с этим, html-помощники строго типизированы.
В действии post в контроллере он получает viewmodel.
У меня есть несколько случаев в POST
,
один случай - сохранить некоторые поля (одной) таблицы, на которые есть ссылки в viewmodel,
в других случаях для сохранения некоторых полей в (несколько) таблиц, на которые есть ссылки в viewmodel
Я добавил точку останова и проследил код, ModelState
не возвращает нулевые значения, но когда отладчик достигает var sod_request = new SOD_REQUEST
, он не попадает в блок кода и выдает ошибку 'Value cannot be null'
, указывая в свойство другой модели, в которую я не хочу публиковать данные в первом случае.
Я обработал проверку в viewmodel, используя надежную библиотеку.
Свойства, которые я получаю «Значение не может быть пустым», имеют RequiredIfFalse
атрибут проверки
Я публикую все not null
столбцы SOD_REQUEST
В методе Get того же действия я сопоставляю все атрибуты всех моделей
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Initiate(SViewModel vm)
{
if (vm.IsDelegated == true) //if user checks Delegate
{
try
{
if (ModelState.IsValid)
{
var s_request = new S_REQUEST
{
REQUEST_ID = TempData["SRequestID"].ToString(),
CREATION_DATE = DateTime.Now.Date,
INITIATOR_ID = (Int32)TempData["InitiatorID"],
SERVICE_TYPE_ID = 1
};
db.S_REQUEST.Add(s_request);
db.SaveChanges();
return View("Success");
}
}
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, "Unable to save changes.");
Console.Write("check error: " + ex);
}
return View(vm);
}
}
Я ожидаю сохранить в одну таблицу только те атрибуты, которые я сопоставил
Почему поле в другой модели запрашивает значение?
Это потому, что я использую строго типизированные представления?