0

どうすればいいのかわからないので、おすすめを教えていただきたいです。私が達成しようとしているのは、基本的に (私は純粋な MVC3.Net を使用しています)、特定のセッションが開始または終了するたびにレイアウト ページの html を変更することです。これは、ユーザーがプロジェクトの詳細に入った場合 (プロジェクトはエンティティです)、メイン メニューにより多くのオプションを表示するという要件に基づいて私が思いついたアイデアです。さらに、オプションはユーザーのタイプによって異なります。

少し調査した後、プロジェクトが選択されるたびに作成するセッション開始のイベントをキャッチするというアイデアを思いつきましたが、セッションの開始または終了時にそれを解決してから変更できるかどうかはわかりませんhtml。

これを達成するための最良の方法は何ですか?

4

2 に答える 2

0

セッションに基づいてコントローラーからビューのレイアウトを制御できます ここに短い例があります

@{
    ViewBag.Title = "Index";
    Layout = ViewBag.Layout;
}

public ActionResult Index()
    {
        if(Session["one]=="one")
       {
        ViewBag.Layout = "~/Views/Shared/site_1.cshtml";
       }
       if(Session["one"]=="two")
      {
       ViewBag.Layout = "~/Views/Shared/site_2.cshtml";

      }

}
于 2012-04-25T05:35:21.337 に答える
0

https://github.com/maartenba/MvcSiteMapProviderの動的サイトマップ機能を使用して、タスクを解決できるかもしれません。

このプロバイダーを使用したくない場合は、すべてのビューモデルに BaseViewModel を使用し、そこにプロジェクト ステータスを保存することをお勧めします。したがって、次のようなことができます。

@model BaseViewModel(or something derived) 
@{
    ViewBag.Title = "Index";
    Layout = ViewBag.Layout;
}

public ActionResult Index()
    {
       if(Model.HasProjectDetails)
       {
        @Html.Partial("_ExtendedNav")
       }
       if(Model.HasSomeExtraProjectDetails)
       {
        @Html.Partial("_MoreExtendedNav")
       }
}

しかし、全体的には、 https://github.com/maartenba/MvcSiteMapProvider/wiki/Dynamic-sitemapsでサイトマップ プロバイダーを使用することをお勧めします。

于 2012-04-25T06:56:33.950 に答える