私は最終的にWebFormsからMVCに移行しており、質問が発生していて、私は良い解決策を見つけることができないようです...複数のコントローラが同じデータを表示するMVCの部分ビューまたはベースビューモデルですか?
私は_layout.cshtmlページに最後のログされたユーザーのための4つのメッセージ。これはサイトのすべてのコントローラに存在します。
どうすればよいですか?
A)BaseViewModel:
public ActionResult Index()
{
HomeViewModel h = new HomeViewModel();
h.UserName = "Daniele"; //in BaseViewModel
h.LastMessages = _messagesRepository.GetLastItems(4); //in BaseViewModel
//Other data specific to index page
return View(h);
}
public ActionResult Dashboard()
{
HomeViewModel h = new HomeViewModel();
h.UserName = "Daniele"; //in BaseViewModel
h.LastMessages = _messagesRepository.GetLastItems(4); //in BaseViewModel
//Other data specific to dashboard
return View(h);
}
:すべてのアクションすべてのコントローラおよびIはBaseViewModelから、私は、データ+ baseviewModelの最後の4メッセージを設定し、すべてのコントローラに継承特定のviewmodelを作成する必要がB)のHTML処置:より良い解決策だが、すべてのコントローラで私はまだ私が作成しますすべてのコントローラに
[ChildActionOnly]
public PartialViewResult LastMessages()
{
//Code
}
を貼り付け&をコピーする必要があります。
最高のプラシタは何ですか?提案? ありがとうございます。
コントローラを 'Html.Action'で指定することができます – TryingToImprove
' [ChildActionOnly] 'メソッドを使用しますが、あなたのコントローラの1つ(例えば' MessagesController')内にある必要があります。 {Html.RenderAction( "LastMessages"、 "Messages"); } ' –