2011-01-14 9 views

答えて

1

ViewBagを使用してデータを渡すことができます。お使いのコントローラで

:あなたの中に

ViewBag.LayoutModel = myData; 

アクセスは、レイアウト:

@ViewBag.LayoutModel 

それは動的オブジェクトなので、あなたが望む任意のプロパティ名を使用することができます。

1

ViewBagメソッドが最も簡単です。しかし、高度な型付けされたフィーチャーが必要な場合は、共通のコントローラーを使用して、そのパーツを部分ビュー(従属セクションをレンダリングするパーツ)にすることもできます(値を独自に計算でき、他のコントローラからの入力)、_RayoutからRenderPartialを呼び出します。
あなたは私はあなたにそれについていくつかの詳細情報を与えることができたい場合は...いつものように

+2

はい、私たちにそれについていくつかの詳細情報を与えてください:] – cc0

10

あなたがデータを表すビューモデルを作成することで起動します。

public class MyViewModel 
{ 
    public string SomeData { get; set; } 
} 

その後、フェッチされますコントローラどこからデータ:

public class MyDataController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      SomeData = "some data" 
     }; 
     return PartialView(model); 
    } 
} 

、対応するビュー(~/Views/MyData/Index.cshtml)データを表現する:

@{ 
    Layout = null; 
} 
<h2>@Model.SomeData</h2> 
あなたの _Layout.cshtml内部

、最終的にはどこかにこのデータが含まれます。

@Html.Action("index", "mydata") 
+0

これはあなたがすべてのビューにこれを手動で追加する必要が暗示します。すべてのページの_layout.cshtmlにデータを渡す方法はありますか? –

+0

@Anthony Gatlin、絶対にそうではありません。 _Layout =>に '@ Html.Action(" index "、" mydata ")'を完全に細かく書くことができます。このレイアウトを使用するアプリケーションのすべてのページに自動的に追加します。 –

関連する問題