在特定条件下显示错误消息(空列表)

时间:2013-02-12 20:44:38

标签: c# asp.net-mvc

在我的控制器中,我根据用户首先选择的参数过滤列表。它就像一个搜索引擎。

列表有可能返回0值。虽然这不是错误,但我想显示某种消息,比如错误消息,但到目前为止我发现的所有消息都是在c#中使用ModelState或ModelStateDictionary,这也需要异常。但这也不例外,只是一个条件,所以我有点不解。

我会写出一些代码,以便您可以直观地看到我想要的内容:

    if(listOBJS.count == 0)
    {
        // DISPLAY THE ERROR!
        PopulateDDL1();
        PopulateDDL2();
        return View(listOBJS);
    }

是的,关于我想做什么。我该怎么办?感谢您的建议。

2 个答案:

答案 0 :(得分:4)

ModelState不需要例外。 您可以使用您想要的任何消息添加Modelstate错误,并使用常规方法检查ModelState.isValid以决定是继续,还是返回到视图以显示错误。

ModelState.AddModelError("", "Your Error Message");

或者,您也可以使用ViewBagViewData来填充邮件。

ViewBag.ErrorMessage = "Your Error Message";
ViewData["ErrorMessage"] = "Your Error Message";

然后在视图中可以显示

@Html.ValidationMessage("ModelName")
@ViewData["ErrorMessage"]
@ViewBag.ErrorMessage

答案 1 :(得分:2)

如果您没有传递Model并且不想使用ModelState进行检查,则可以将任何消息传递给ViewBag并在视图中检查它的值。如果它在那里,那么在视图中显示它。

控制器:

public FileResult Download(string fileName)
{
   if (string.IsNullOrEmpty(fileName) || !File.Exists(fileName))
   {
       ViewBag.Error = "Invalid file name or file path";
       RedirectToAction("Index");
   }

   // rest of the code
}

索引视图

@if (ViewBag.Error != null)
{
    <h3 style="color:red">@ViewBag.Error</h3>
}