2009-08-24 12 views
1

私は他のシステムを監視するアプリケーションを構築しています。今私は部分的なビュー、 "ステータス"と呼ばれるユーザーコントロールを実装したいと思います。このコントロールはapplication.Likeに関するステータス情報を表示しなければならない。ビューにデータを渡します。常にviewDataを通して?

ユーザーがログインし、オンライン

どのように多くのシステム、

最新の活動。

この部分図は、ほぼすべての他のビューでレンダリングされます。この情報をどのように見えたらいいですか?

私はすべての私の行動で

Wiewdata[“SystemsOnline”] = Helpers.CountSystemsOnline() 
Wiewdata[“SystemLatestActivity”] = ……………… 

を書きたくはありません。

私はHtml.RenderPartial(../ Shared/Status)のようなものを書いて、ビューデータを追加するアクションに行くことはできますか?

または、私はヘプラーを通って直接情報にアクセスする必要がありますか?

私は、デフォルトのLogOnUserControlビューがPage.User.Identity.Nameを使用してそのデータに直接アクセスしていることに気付きました。

データをコントローラに渡すことはできますか?

答えて

2

この目的のためには、ViewDataクラスを使用する必要があります。私は代わりにのトリックを発明することをお勧めしません。

を手動で入力する必要はありません。から同じデータをに渡してください。あなたのベースコントローラでそれをやり直してください:

protected override void OnActionExecuted(ActionExecutedContext context) { 
    base.OnActionExecuted(context); 
    if (context.Result is ViewResult) { 
     // Pass the systems online to all views 
     ViewData[“SystemsOnline”] = Helpers.CountSystemsOnline(); 
    } 
} 

わずか2行のコードで、どこでも利用できます。

関連する問題