如何向用户显示Web服务异常?

时间:2012-11-29 11:55:37

标签: c# asp.net-mvc-3 web-services

当我从Web服务获取MVC 3控制器中的异常时,如何向用户显示此消息并返回到他所在的页面?

我想向用户展示像......

如果我正在创建一个用户并且用户的名称已经存在,那么我抛出一条带有消息的异常(“具有名称的用户......已经存在”)并且我希望在我的控制器捕获并向用户显示警报或类似内容。

1 个答案:

答案 0 :(得分:0)

您必须将要显示的错误添加到ModelState

例如,

public ActionResult CreateUser(User user)
{
    try
    {
       _webServiceProxy.CreateUser(user);
    }
    catch(...)
    {
       ModelState.AddModelError("", "The user name already exists");
    }

    return View();
}

在视图中,您可能应该使用@Html.ValidationSummary()向用户显示错误。

如果要在用户名字段附近显示错误消息,则必须将字段名称作为第一个参数传递。

ModelState.AddModelError("Name", "...");

并且在视图中您必须使用@Html.ValidationMessageFor(m => m.Name)

如果您想出于任何原因(我不喜欢这样)在警告框中显示错误,您可以通过在视图底部渲染小脚本来实现。从控制器,您必须通过ViewBag将错误传递给视图。

控制器,

ViewBag.Error = "The user name already exists";

查看,

@{
   var error = ViewBag.Error;
}

<script type="text/javascript">
   var error = "@error";
   if(error)
     alert(error);
</script>