none
常に表示可能なドロップダウンメニューを作成したい RRS feed

  • 質問

  • いつもお世話になっております。

    言語     = C#
    開発手法 = MVC
    開発環境 = Visual Studio 2015 Pro
      OS      = Win7
      DB      = SQL Server 2014

    どの画面からでも他の画面にアクセス出来るように
    画面上部にドロップダウン形式でメニューを作ろうと考えています。

    システムは最初にログイン画面を表示させ、ログインしたユーザー権限に合わせて
    DBからメニュー内容やコントローラ名等を取得し、可変にしました。

    メニューは最初から存在している共通レイアウト『_Layout.cshtml』に組み込みました。

    ここまで来て気づいたのですが、共通レイアウトにドロップダウンメニューを入れてしまうと、
    画面を再描画する度に必ずメニュー内容をDBにアクセスして共通レイアウトに渡さなくてはなりません。

    ログイン後はメニューを変更する必要もなく、データの取得もしたくないのですが、
    この場合、普通はどうやって実現しているのでしょうか?

    画面イメージ的には、このフォーラムのヘッダに位置する『コミュニティ』や『ドキュメント』等が
    現在のメニューなり、画面を再描画する際はメニュー更新を回避したく、
    参考サイトのご教示やアドバイスを頂きたいです。


    以上、何卒宜しくお願い申し上げます。

    2017年3月22日 8:21

回答

  • 具体的にどういうことがしたいのか質問からは分からないのですが、何にせよステートレスな Web アプリで、

    > ログイン後はメニューを変更する必要もなく、データの取得もしたくないのですが、

    ということをしたいのであれば、取得したデータをどこかに保持しておくほか方法はなく、そのために ASP.NET には以下の機能が用意されていますので、そのどれかを使うことになると思います。

    •ビューステート
    •コントロールの状態
    •隠しフィールド
    •Cookie
    •クエリ文字列
    •アプリケーション状態
    •セッション状態
    •プロファイル プロパティ

    詳しくは以下の記事を見てください。

    ASP.NET の状態管理の概要
    https://msdn.microsoft.com/ja-jp/library/75x4ha6s.aspx

    ASP.NET MVC で、ユーザー毎に異なる情報ということのようですので、上記の内利用できるのは「Cookie」「セッション状態」になるかと思います。

    検討してみてください。


    【追伸】

    アプリケーションキャッシュも使えるかもしれません。上の機能とあわせて検討してみてください。 

    ASP.NET のキャッシュの概要
    https://msdn.microsoft.com/ja-jp/library/ms178597(v=VS.100).aspx


    【追伸2】

    たびたびすみません。もう一つ忘れていました。

    ブラウザ依存ですが Web Storage の使用も検討に含めてはいかがでしょう?

    Web Storage
    http://www.htmq.com/webstorage/



    2017年3月22日 10:30

すべての返信

  • 具体的にどういうことがしたいのか質問からは分からないのですが、何にせよステートレスな Web アプリで、

    > ログイン後はメニューを変更する必要もなく、データの取得もしたくないのですが、

    ということをしたいのであれば、取得したデータをどこかに保持しておくほか方法はなく、そのために ASP.NET には以下の機能が用意されていますので、そのどれかを使うことになると思います。

    •ビューステート
    •コントロールの状態
    •隠しフィールド
    •Cookie
    •クエリ文字列
    •アプリケーション状態
    •セッション状態
    •プロファイル プロパティ

    詳しくは以下の記事を見てください。

    ASP.NET の状態管理の概要
    https://msdn.microsoft.com/ja-jp/library/75x4ha6s.aspx

    ASP.NET MVC で、ユーザー毎に異なる情報ということのようですので、上記の内利用できるのは「Cookie」「セッション状態」になるかと思います。

    検討してみてください。


    【追伸】

    アプリケーションキャッシュも使えるかもしれません。上の機能とあわせて検討してみてください。 

    ASP.NET のキャッシュの概要
    https://msdn.microsoft.com/ja-jp/library/ms178597(v=VS.100).aspx


    【追伸2】

    たびたびすみません。もう一つ忘れていました。

    ブラウザ依存ですが Web Storage の使用も検討に含めてはいかがでしょう?

    Web Storage
    http://www.htmq.com/webstorage/



    2017年3月22日 10:30
  • いつも大変お世話になっております。

    せっかくご教示頂いたのに、反応が遅く申し訳ございません。
    アプリケーションキャッシュとWeb Storageは勉強不足で知りませんでした。
    特にWeb Storageはソースも載っているリンクを有難うございます。

    参考にさせて頂きます。


    以上です。

    2017年3月26日 14:50