在我的控制器中,我根据用户首先选择的参数过滤列表。它就像一个搜索引擎。
列表有可能返回0值。虽然这不是错误,但我想显示某种消息,比如错误消息,但到目前为止我发现的所有消息都是在c#中使用ModelState或ModelStateDictionary,这也需要异常。但这也不例外,只是一个条件,所以我有点不解。
我会写出一些代码,以便您可以直观地看到我想要的内容:
if(listOBJS.count == 0)
{
// DISPLAY THE ERROR!
PopulateDDL1();
PopulateDDL2();
return View(listOBJS);
}
是的,关于我想做什么。我该怎么办?感谢您的建议。
答案 0 :(得分:4)
ModelState不需要例外。 您可以使用您想要的任何消息添加Modelstate错误,并使用常规方法检查ModelState.isValid以决定是继续,还是返回到视图以显示错误。
ModelState.AddModelError("", "Your Error Message");
或者,您也可以使用ViewBag
或ViewData
来填充邮件。
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>
}