0

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

我想向用户展示一些东西,比如......

如果我正在创建一个用户并且该用户的名称已经存在,那么我会抛出一个带有消息的异常(“具有该名称的用户......已经存在”)并且我想在我的控制器捕获中获取此异常并向用户显示警报或类似的东西。

4

1 回答 1

0

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

例如,

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

    return View();
}

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

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

IE

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>
于 2012-11-29T12:36:51.950 回答