2017-06-12 13 views
0

私は1つの小さなmvcアプリケーションを実装しています。私はApplication_Errorイベントで例外を処理しています。例外が発生した場合、カスタムエラーページを表示しています。しかし、ある状況では、例外が発生した場合に警告メッセージを表示したい。しかし、私はそれをどうやってやるのか分からない。MVCの内部サーバーエラー

EX:

public PartialViewResult EditUser(int? userId, int orgId) 
{ 
    var model = new UserViewModel(); 
    try 
    { 
     model.SelectedUser.OrgDaid = new Service.GetOrgDaid(orgId); 
    } 
    catch(Exception) 
    { 
    } 
    return view(model); 
} 

Service.cs:上記の例で

public Daid GetOrgDaid(orgId) 
{ 
    Daid daid = null; 
    try 
    { 
     daid = daDataAccess.FirstOrDefault(x=>x.Id == orgId && type == "Org") 
    } 
    catch(Exception ex) 
    { 
     throw new Exception("Daid is null"); 
    } 
    return daid; 
} 

例外がGetOrgDaidにoccures場合は、その後、私は同じビュー上の警告でユーザーに同じ例外を表示したい場所をユーザーのリスト存在する。

答えて

0

例外(エラーメッセージ)を保存するためにTempDataを使用し、例外が発生するとすぐにページに表示することができます。 throw new GetOrgException("Daid is null");

@if (TempData["ErrorMessage"] != null) 
{ 
    <script> 
     toastr.error('@Html.Raw(TempData["ErrorMessage"])', 'Error'); 
    </script> 
} 
+0

ユーザーのリストが表示されているエラーメッセージを表示したいので、編集ユーザービューでエラーを表示したくないので、私にとってはうまくいかないでしょう。 – user7745736

+0

EditUserアクションでエラーメッセージ_を設定したという事実は、それがあなたが見ることができる_onlyの場所であるという意味ではありません。エラーを表示するHTMLはページ上のどこにでも置くことができ、例えばJavaScriptを使用して表示/表示することができます。別のオプションは、例外に「 '' RedirectToAction'''を呼び出すことで、リストに戻ってエラーメッセージを表示します。 –

+0

ええ、私はそれを得た;)しかし、私は再び同じビューをレンダリングしたくない場合は、より多くの時間がかかりますので、単に新しいページをロードせずにエラーメッセージを表示したい。 RedirectToActionオプションをスキップしました。 – user7745736

0

変更throw new Exception("Daid is null");:私はこのようになり、このような構成を使用しました。 GetOrgExceptionは、Exceptionという新しい例外です。あなたが書くでしょう新たlogExceptionメソッドを使用すると、ユーザーに表示したいものは何でもディテール抽出う

catch(GetOrgException ex) 
{ 
    model.LogException(ex); 
} 
catch(Exception) 
{ 
} 

次に、この新しい例外をキャッチするキャッチを変更します。