从控制器传递错误消息到视图

时间:2015-09-06 12:20:28

标签: asp.net-mvc

我想做类似下面的事情。

//Controller

if(Session["UserId"]!=null)  // If user is logged in
{
   return View(db.Orders.ToList());
}
else
{
    //return a error message on the same view
}

我该怎么做?

3 个答案:

答案 0 :(得分:0)

理想情况下,您将使用视图模型,并在那里有一个错误消息属性。如果您没有使用视图模型,可以向ViewBag添加一个值并在视图中使用它:

if(Session["UserId"]!=null)  // If user is logged in
{
    return View(db.Orders.ToList());
}
else
{
    ViewBag.ErrorMessage = "My error message";
}

在您的视图中,您可以在某处使用附加值:

<p>@ViewBag.ErrorMessage</p>

答案 1 :(得分:0)

不确定你是否仍然需要这个,但我要做的是抛出HttpException并让我的ajax调用处理它。

示例:

try
{
  // DO SOMETHING....
}
catch (Exception ex)
{
  //Note: I use Bad Request status code for this example. You can choose what is specific for your needs...
  throw new HttpException((int)HttpStatusCode.BadRequest, ex.Message, ex.InnerException); 
}

答案 2 :(得分:0)

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

有一个默认的验证摘要div,它显示遇到的异常。 否则,在创建自己的显示器时,最好使用Viewbag。