当我从Web服务获取MVC 3控制器中的异常时,如何向用户显示此消息并返回到他所在的页面?
我想向用户展示像......
如果我正在创建一个用户并且用户的名称已经存在,那么我抛出一条带有消息的异常(“具有名称的用户......已经存在”)并且我希望在我的控制器捕获并向用户显示警报或类似内容。
答案 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>