###前提・実現したいこと
ここに質問したいことを詳細に書いてください
初めてご質問させて頂きます。初心者ですので、基礎的な質問となってしまうかもしれませんが、お力を頂きたいです。
Controller1/Action1/id → Controller2/Action1/id → Controller3/Action1/id
↓
(条件によって)→ Contoroller1/Action2/id → Controller2/Action1/id → Controller3/Action1/id
このように、アクション・コントローラーが異なる画面にドリルダウンをしていくWebサイトで、パンくずリストを動的に作成しようと試みています。
コントローラー側でパンくずリストの中身のURLのデータをList型で作り、各Viewでそれを展開するような実装をすることで、動作自体は期待した動きになったのですが、
このListのデータの受け渡しのより良い方法を探しています。
Listのデータの中身の例:List{Controller1/Action1/id,Controller2/Action1/id,Controller3/Action1/id}
①Sessionに入れる場合
Sessionに上記のデータを格納して、各Viewで展開する方法ですが、複数タブで開いた際に、パンくずリストが誤った表示になってしまいました。
②Sessionを使用しない場合
Sessionを使用せず、各ViewにはViewModelに格納して渡す方法です。
Listの中身のデータを、View→Controllerに返す際に、"Controller1/Action1/id,Controller2/Action1/id,Controller3/Action1/id"
などといった長いクエリ文字列をそのまま送ることになり、セキュリティ的にもクエリ文字列の文字制限的にもいろいろと問題があります。
私としては、セッションを使うのではなく、②の方向でなんとか実現したいです。
View→コントローラーにクエリ文字列を送る場合に、長い文字列を短くする方法などはありませんでしょうか?
また、ほかにもアイデアがあるようでしたらぜひご教示頂きたいです。よろしくお願いします。
###該当のソースコード
ここにご自身が実行したソースコードを書いてください
※以下のような実装をしています。
Contoroller
{
List<string> Dataを作成
ViewModel.URL = Data
}
View
{
foreach(var item in model.URL)
{
//展開
}
//画面遷移
ActionLink("ドリルダウン"Contoroller,Action,new {string.Join(", ", model.URL.ToArry)})
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/24 20:33