2016-08-09 9 views
0

例外をキャッチするコントローラがあります。すべてのページに適用するために、_Layout.cshtmlの汎用のJavaScriptにエラーメッセージを渡したいと思います。値が通常ビューから_Layout.cshtmlに渡されるかどうかは、たとえば@ViewBag = "エラーメッセージ"; ViewBag.ErrorMessage = "エラーメッセージ";コントローラでは表示されますが、部分表示では機能しません。部分ビューから共有ビューに値を渡す方法asp.net MVCの_Layout.cshtml?

文字列メッセージを部分ビューから_Layout.cshtmlに渡すにはどうすればよいですか?

+0

?ページの読み込みには? – Shyju

+2

ViewBagはレイアウトファイルからアクセス可能でなければなりません。試したことを示すコードを投稿してください。 – sachin

答えて

0

あなたがしようとしていることを正確には分かりません。しかし、一度レンダリングすると、メッセージやその他のデータを含む可能性があるグローバルなJavaScript関数を実行するスクリプトビューを部分ビューに置くことができます。 _layoutで例えば

あなたが持っている:

<script> 
    function ShowError(message) { 
     alert(message); 
    } 
</script> 

をしてから部分的にあなたが持っている:

<script> 
// check for existence of error and if so 
ShowError(ErrorMessage); 
</script> 
+0

'Partial View'は' _Layout file'を使用しません。だから、この解決策は効率的ではありません。 – mmushtaq

+0

@ mmushtaqしかし、それは具体的に質問です。 – Dillon

+0

@mmushtaqアラート機能をすべての部分ビューにグローバルに適用する場合は、_Layoutファイルを使用する以外の方法がありますか? – dennisccy

0

あなたが同じ要求時にそのレイアウトに部分図からデータを渡したい場合は、

部分ビューファイル

:あなたは ViewBagオブジェクトを介して行うことができます

_layoutファイル

@if (ViewBag.ErrorMessage != null) 
{ 
    <script> 
    alert(@ViewBag.ErrorMessage); 
    </script> 
} 

あなたは、コントローラのアクションで例外をキャッチして、リダイレクトにエラーメッセージを渡したい場合は、TempDataを使用して行うことができます。

コントローラ

public ActionResult SomeAction(){ 
... 
try{ 
    .... 
}catch(Exception e){ 
    TempData["errorMessage"] = e.Message; 
    return RedirectToAction("MaybeSomeOtherAction"); 
} 
... 
} 

「MaybeSomeOtherAction」の_layoutファイル

@if (TempData["errorMessage"] != null) 
{ 
    <script> 
    alert(@TempData["errorMessage"]); 
    </script> 
} 
0

エラーの共通プロパティを作成します。

public static class Common 
    { 
     public static bool ERROR {get;set;} 
    } 

例外がスローされたか、このプロパティをTrueに設定し、エラーメッセージを表示する場合は、あなたの_Layouファイル、ビューまたは_Partialビューで

try 
{ 
    //Any Code 
} 
catch(Exception) 
{ 
    Common.ERROR = true; 
    return PartialView("_PartialView"); 

} 

、あなたはDocument.Readyでこのプロパティを確認することができ、それが本当であるならば、あなたはエラー警告を表示することができます。あなたが値を渡したいものをイベントで

$(function(){    
     if(@Html.Raw(Json.Encode(@HelloWorldMvcApp.Common.ERROR))) 
     { 
       alert("error message"); 
        return; 
     } 
}) 


Demo if this property is True

Demo if it is False or its value is not set to true

関連する問題