Web サービスから MVC 3 コントローラーで例外が発生した場合、このメッセージをユーザーに表示して元のページに戻るにはどうすればよいですか?
ユーザーに何かを見せたい...
ユーザーを作成していて、そのユーザーの名前が既に存在する場合、メッセージ (「その名前のユーザーは ... 既に存在します」) で例外をスローし、コントローラーのキャッチでこの例外を取得したいと考えています。アラートなどとしてユーザーに表示します。
Web サービスから MVC 3 コントローラーで例外が発生した場合、このメッセージをユーザーに表示して元のページに戻るにはどうすればよいですか?
ユーザーに何かを見せたい...
ユーザーを作成していて、そのユーザーの名前が既に存在する場合、メッセージ (「その名前のユーザーは ... 既に存在します」) で例外をスローし、コントローラーのキャッチでこの例外を取得したいと考えています。アラートなどとしてユーザーに表示します。
に表示したいエラーを追加する必要があります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>