我有一个看起来像这样的控制器:
if (ModelState.IsValid)
{
...
}
else
{
ViewBag.Msg = "error";
return View();
}
我添加了ViewBag.Msg
来记录控制器的行为。如果表单无效,它应根据模型验证器显示正确的错误消息,但它不起作用,因为视图上显示“错误”字符串。
如何跟踪错误。根据文档ModelState
有一个属性Errors
但视觉工作室说这不是真的。
是否有另一种方式记录错误以及它可能是什么。
修改
我已经拥有@Html.ValidatorSumary(true)
,这就是关于这种情况的奇怪之处,我知道ModelState
由于ViewBag.Msg
行无效,但它没有显示任何内容。< / p>
EDIT2
碰巧我有一个像这样的帮助者的错误值
@Html.RadioButtonFor(x => x.BoolField, 1)
和模型
public Nullable<Bool> boolField { get; set; }
答案 0 :(得分:3)
您必须将模型返回到视图以在视图中显示模型错误。如果要记录模型错误,可以查看ViewData.ModelState.Values
集合以查看错误。
[Httpost]
public ActionResult Create(User model)
{
if(ModelState.IsValid)
{
//save and redirect
}
else
{
foreach (var modelStateValue in ViewData.ModelState.Values)
{
foreach (var error in modelStateValue.Errors)
{
var errorMessage = error.ErrorMessage;
var exception = error.Exception;
// You may log the errors if you want
}
}
}
return View(model);
}
}
答案 1 :(得分:0)
希望这有帮助。
public ActionResult SomeAction(SomeModel model)
{
if (!ModelState.IsValid)
{
// validation error.. display model with error messages
return PartialView("partialview", model);
}
try
{
//success
return Json(new { success = true });
}
catch (Exception ex)
{
// show error in ValidationSummary
ModelState.AddModelError("", ex.Message);
return PartialView("partialview", model);
}