1

我通过ViewBag. 在我的控制器中,我将一个List<string>包含值(_modelErrors)的值传递给,ViewBag然后我试图在我的视图中显示它。当我在视图中调试时,我ViewBag确实包含一个_modelErrors带有值的字典,但我的错误没有被呈现。

从我的控制器:

ViewBag._modelErrors = _modelErrors;

在我看来,我已经尝试了所有这些方法,但没有呈现任何标记。

@try
{
    foreach (string er in ViewBag._modelErrors)
    {
        Response.Write(er.ToString());
        @Html.DisplayText(er) 
        @Html.DisplayText(er.ToString()) 
        @er.GetType()
        @er.ToString();
        er.ToString();
    }
}
catch(Exception e){}
4

2 回答 2

3

这是一个肮脏的代码,伙计!看看@Html.ValidationSummary@Html.ValidationMessageFor

好吧,这里有一些代码可以澄清一些事情:

[HttpPost]
public ActionResult MyAction(ModelClass inputModel)
{       
    if (ModelState.IsValid)
    {
        //for example we're trying to save our data to db
        var result = _myRepository.saveStuff(inputModel);

        if (result)
            return RedirectToAction("someAction");

        ModelState.AddModelError(string.Empty, "An error occured, check input data");           
    }       
    return View(inputModel);
}

您还可以指定键(这是您的模型字段名称)而不是 string.Empty -> 因此您会在指定字段下看到错误消息(默认情况下),但基本上人们所做的是从验证摘要(@Html.ValidationSummary(true))中排除属性错误 -所以你只会在那个领域得到一般错误。希望它会有所帮助

于 2013-06-28T12:41:28.213 回答
1

用这个:

(string er in (List<string>)(ViewBag._modelErrors))

但有人说这是不好的做法。以这种方式捕获异常也是非常错误的......

于 2013-06-28T12:52:25.087 回答