2016-12-21 2 views
0

上にあるもののページの_Layout.cshtmlのヘッダにデータを送信します。これは、どのページにいるかにかかわらず、ユーザーに常に通知を表示できるようにするためです。に関係なく、ユーザが、私は私の_Layout.cshtmlファイルのヘッダに通知バッジを持って

<a href="#">Notifications <span class="badge">@ViewData["NotificationCount"]</span></a><br> 

しかし、私はこれを行うより良い方法があるかどうか疑問に思っています。これも意味

@{ 
    ViewData["ReminderCount"] = Model.Notifications.Count(); 
} 

私は自分のアプリケーション全体ですべての単一のページビューモデルの一部として、通知のリストを持っている必要があります:私は私の意見のひとつひとつの1の最上部に次の操作を行う必要があるように思えます。

ここに何か不足していますか? ASP.NET MVCでこれを処理するには、より良い方法が必要なように感じます。

ログインするとすぐにユーザーの通知を読み込んでダッシュボードに移動し、通知を確認しない限りその番号をすべてのページに表示し続けるのが理想的です。

答えて

1

何ができることはアクションを作成し、その作用に対する部分的なビューを作成し、_Layout.cshtmlにあるが、これはコードの重複とViewDataからあなたを救う、それを呼び出す:

あなたのアクションコードを見ていきます以下のような:

@model System.Int32 

<a href="#">Notifications 
<span class="badge">@Model</span> 

public ActionResult Notifications() 
{ 
    var model = Model.Notifications.Count(); 
    return View("_NotificationsPartial",model); 
} 

あなたの部分図_NotificationsPartial.cshtmlは次のようになります

今、あなたは自分の_Layout.csthmlでそれを呼び出す必要があります:

@Html.Action("Notifications","SomeController") 
+0

これは私が感謝を必要とまさにです!私がまだ混乱している唯一のことは、コントローラーが部分的なモデルをバインドするActionResultを配置することです。私は一般的なコントローラを作成すると思います。また、@ Html.Actionは何らかの理由でASP.NET Coreで使用できません。 –

+0

がコアに、我々は今のコンポーネントを持って、あなたが見る、ものを作る必要があります:http://www.mikesdotnetting.com/article/294/view-components-in-asp-net-core-mvc –

+0

パーフェクト、ありがとう! –

関連する問題