Asp mvc没有显示错误

时间:2012-09-11 15:54:21

标签: asp.net-mvc

我有一个看起来像这样的控制器:

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; }

2 个答案:

答案 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);
                }