MVC模型验证和打印错误

时间:2014-02-22 13:21:55

标签: c# asp.net-mvc entity-framework validation

我有以下控制器操作,它会验证模型列表

public ActionResult Translate(int RoleId, ICollection<RTFM> list)
        {
            bool IsValid = true;
            foreach (var item in list)
            {
                ModelState.Clear();
                TryValidateModel(item);
                if (!ModelState.IsValid)
                {
                    IsValid = false;
                }
            }
            if (IsValid)
            {
                foreach (var item in list)
                {
                    ...
                    db.SaveChanges();
                }
                return RedirectToAction("Translate", new { Id = RoleId });
            }
            ViewBag.RoleId = RoleId;
            return View(list);
        }

该函数正确验证列表中的每个模型,但将错误添加到模型状态。如果验证出错,如何从列表中的每个字段显示此错误?我应该以另一种方式进行验证吗?

这样我可以从ModelState为每个字段打印每个错误,但不会在每个字段附近显示它们。

这是我的观点的一个字段:

@Html.ValidationSummary(true)

...
<div class="form-group">
                        @Html.LabelFor(model => model[i].Name, new { @class = "control-label col-md-2" })
                        <div class="col-md-10">
                            @Html.TextAreaFor(model => model[i].Name)
                            @Html.ValidationMessageFor(model => model[i].Name)
                        </div>
                    </div>

1 个答案:

答案 0 :(得分:0)

似乎如果我以这种方式进行验证,它就可以了。我不知道你可以对整个系列进行验证。

if (ModelState.IsValid)
            {
                foreach (var item in list)
                {
                    ...
                    db.SaveChanges();
                }
            }

还有其他更好的方式吗?