2012-04-01 46 views
3

私は最近、ASP.NET - MVC 4を使用してWebサイトを構築し始めました。部分ビューのコントローラASP.NET MVC

私はすべてのページに表示したいデータがあり、部分的なビューがこれに最適であると理解しています。

部分ビューのデータを常に提供するコントローラを作成することはできますか?または、どうすればこの問題を解決できますか?

答えて

8

これは、子の動作と呼ばれています。

Html.Action(...)を呼び出します。

+0

余分なリクエストが生成されますか? – johan

+0

@ johan:いいえ – SLaks

2

パーシャルビューのコントローラアクションを作成することができます。あなたはすべてのページにいくつかのことをinlcludingを探しているなら、あなたはあなたの_Layout.cshtmlページ

にあなたがこの

public ActionResult UserInfo() 
{ 
    UserViewModel objVm=GetUserInf(); 
    // do some stuff 

return View("PartialUserInfo",objVM); 

} 

のような部分的なビューを返し、通常のアクションメソッドを作成することができることを追加することを考える必要がありますこれはあなたのコントローラ名がユーザーであると仮定すると、(あなたのViews/Usersフォルダに存在する名前を持つ「PartialUserInfo」のビューを返します。あなたが見る方法

returnView("Partial/UserInfo",objVm); 
を呼び出すときに、あなたがそれを言及することができます別の場所でのビューを指定する場合0

これはあなたのViews/Users/Partialフォルダに "UserInfo"というビューを返します。あなたの部分図で

(あなたは1を持っている場合)、あなたはdointことにより、通常のレイアウトを無効にすることができ、この

@model UserViewModel 
@{ 
    Layout=null; 
} 
0

一つの方法は、親ビュー(すべてのパーシャルをホスティング1)のためのモデルを持っていることですそれは、そのモデルの性質として部分図のモデルが含まれてい

EX:

MainModel.ModelForPArtialView1 
MainModel.ModelForPArtialView2 
MainModel.ModelForPArtialView3 

あなたは親ビューでこれを行うことができますこの方法

@Html.Partial("PartialView1",MainModel.ModelForPArtialView1) 
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2) 
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3) 
+0

解決方法は、ビュー全体でコンテンツが変更されるかどうかによっても異なります。部分ビューのコンテンツはすべての親ビューで正確に同じですか? – TGH

関連する問題