2017-03-01 12 views
0

ViewBag値はレイアウトの共有ビューで使用したいが、別のコントローラから提供しています。特に、主なアクションをレンダリングし、多くのページで使用される(グローバル変数の使用を正当化するためにすべてのページで使用されない)別のコントローラからの変数をいくつか追加したいと思います。共有ビューのViewbag変数_layout

閲覧/共有/ _Layout.cshtml

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title</title> 
    @Styles.Render("~/Content/css_custom") 
    @Scripts.Render("~/bundles/modernizr") 
</head> 
<body> 
    @Html.Action("myAction", "myController") 

    <p>Value: @ViewBag.testval </p> 

    @RenderBody() 

</body> 
</html> 

コントローラ/ myController.csレイアウトで

私がアクセスできる唯一のViewbag変数はRenderBodyの行動目標のものです。

+0

あなたがそれらにアクセスすることを期待するだろうか、その後、ビューに値を渡さない場合(何が起こることを期待している)私は理解して –

+0

@StephenMuecke ...しかしViewBagに新しい変数を追加するにはどのように来て別のコントローラから? – Cyr

+0

できません。ビューを生成しているコントローラに追加する必要があります。 –

答えて

0

このビューを返す必要があります。

public ActionResult Index() 
{ 
    ViewBag.testval = "Test value"; 
    return View(); 
} 
+0

私はページを必要としません、私はいくつかの変数が必要です。 – Cyr

+0

jsonや何か他のもの(javascriptコールバックでajaxコール)を使用してください。 MVCアクションはサーバー側で実行されるため、クライアントに何も返されないvoidメソッドを使用するため、ビューはビューバッグを更新しません。 – maximelian1986