6

私はまだMVCに慣れていないので、我慢してください:-)

作業中のコミュニティサイトがあります。ユーザーがログインした後、すべてのページでオンラインになっているユーザーの数を表示したいと思います。

ログイン後にすべてのページのレイアウトとして使用される共有ビューがあります(UserLayout.cshtml)

どういうわけか、共有レイアウトにオンラインカウントを表示するロジックを追加できますか?

WebFormsの場合、マスターページのコードビハインドがありますが、これは明らかにここでのオプションではありません。

オンラインのユーザーに関する情報は、キャッシュから取得されます。どのビューモデルでもプロパティとして使用できません。

4

4 に答える 4

8

情報をレンダリングするアクションを作成できます(非常に小さなビューを使用)

次に、レイアウトページから呼び出しHtml.Actionてレンダリングできます。

于 2011-03-08T16:19:40.700 に答える
1

'UserLayoutModel'クラスを作成し、それから他のすべてのビューモデルを派生させることができます。'RenderAction'を使用して、UIの一部を個別にレンダリングすることもできます(このアクションをChildActionOnly属性でマークするようにしてください)。

于 2011-03-08T16:20:01.287 に答える
0

私が行ったのは、すべてのコントローラーが継承するBaseController.csを作成することでした。ベースコントローラーでは、OnActionExecutingをオーバーライドでき、ここで設定したviewdata値はマスターページで使用できます。

protected override void OnActionExecuting(ActionExecutingContext filterContext) {
    base.OnActionExecuting(filterContext);
}
于 2011-03-08T16:21:01.120 に答える
0

グローバルアクションフィルターを作成できます。

通常、アクションフィルターを属性としてメソッドまたはクラスに追加します([HttpPost])。グローバルアクションフィルターを使用すると、特定のクラスから継承することなく、すべてのアクションにコードを追加できます。これは、すべてのActionメソッドに属性を追加したようなものです。

この記事では多くのことを説明しています。

于 2011-03-08T21:22:26.800 に答える