在这里,我只是检查一些代码是否对它们所用的报告类型有效,以及是否有相同的代码出现。我在这个函数的第一行暂停了代码(使用F9),并检查了ModelState.IsValid
,它说它是false
。
[HttpPost]
public ActionResult Edit(ReportEditModel report)
{
// some preparation code here
foreach (PairViewModel pair in report.Pairs)
{
if (pair.CodeId == 0 && pair.Amount == 0) continue;
if (!validCodes.Contains(pair.CodeId))
ModelState.AddModelError("WrongCode", "Kod " + pair.CodeId + " ne postoji");
foreach(PairViewModel pair2 in report.Pairs)
if(pair.CodeId == pair2.CodeId && pair != pair2)
ModelState.AddModelError("DoubleCode", "Kod " + pair.CodeId + " se ponavlja više od jednog puta");
}
if (!ModelState.IsValid)
return View(report);
var newPairs = from r in report.Pairs
select new Pair()
// blah, blah, blah...
我无法理解为什么我的模型一直无效。我的任何一个模型都没有注释,所以唯一的说法是:"嘿模型,有错误!"是使用ModelState.AddModelError
,但行if (!ModelState.IsValid) return View(report);
始终触发。我ModelState.IsValid
总是错误的,但我在ModelState
中看不到任何错误。
有问题的模型只有一个属性,public IList<int> ValidCodes { get; set; }
,当它从视图返回到此操作时为空。
请指出我的代码中的错误,如果有的话。除了暂停某些X行代码并通过MouseState
查看它的密钥和错误之外,我该如何检查错误?