即使有0个错误,MVC的模型也不会有效

时间:2016-12-15 17:55:51

标签: validation model asp.net-mvc-5

在这里,我只是检查一些代码是否对它们所用的报告类型有效,以及是否有相同的代码出现。我在这个函数的第一行暂停了代码(使用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查看它的密钥和错误之外,我该如何检查错误?

0 个答案:

没有答案