Может ли кто-нибудь сказать мне, почему проблема в модели существительного не будет обнаружена этим try catch?
Я пробовал это сейчас на двух разных методах контроллера, и оба раза, даже если linq2sql не позволяет сохранять данные, код никогда не переходит в блок catch.
Я наблюдал за существительным объектом в середине трассы, и свойство isvalid имеет значение false, но состояние модели isvalid равно true. В любом случае код никогда не переходит в блок catch.
Я вырываю свои волосы из-за этого. Я чувствую, что это будет что-то действительно глупое.
Код все работает аналогично ужину для ботаников.
NounRepository nounRepository = new NounRepository();
Noun noun = new Noun();
try
{
UpdateModel(noun);
nounRepository.Add(noun);
nounRepository.save();
}
catch (Exception ex)
{
ModelState.AddRuleViolations(noun.GetRuleViolations());
return View(noun);
}
return View(noun);
Обновление
Я только что добавил этот код, и теперь правила возвращаются к внешнему интерфейсу в порядке, так что просто кажется, что попытка перехвата не срабатывает!
UpdateModel(noun);
if (!noun.IsValid)
{
var errors = noun.GetRuleViolations();
ModelState.AddRuleViolations(noun.GetRuleViolations());
return View(noun);
}
nounRepository.Add(noun);
nounRepository.save();
Я бы предпочел не добавлять код таким способом, поскольку это кажется ненужным дублированием.