2011-01-10 17 views
1

私のビューに私は従業員のリストとそれぞれの横にチェックボックスを持っています。 ユーザーは1人以上の従業員を選択し、[submit]をクリックすると、次のページに移動し、選択した各従業員の詳細が表示されます。 従業員番号のリストをあるコントローラから次のコントローラに送信したいと考えています。 これを行う方法の1つは、セッションオブジェクトを使用することです。しかし、それは最善の方法ですか?1つのコントローラから別のコントローラへのパラメータのリストを渡す最善の方法

+1

これは、ASP.NET MVCですぐに使用できます。同じ名前のチェックボックスのリストを出すだけで、受け取るアクションはIDの列挙可能なものになります。 – bzlm

答えて

1

これは、別のコントローラにパラメータを送信するビューを持つ代わりに考えてください。この場合は、従業員リストビューから詳細コントローラに転送されます。選択した従業員IDを詳細コントローラのメソッドに送信するように、リストビューのフォームを変更します。詳細コントローラでは、特定の従業員IDごとに必要な詳細をデータベースに問い合わせることができます

+0

これは反パターンです。ビューは、どこに投稿するかを決めるべきではありません。あなたは非常に迅速にこれを行う問題にそれを実行します。例:モデルが無効であるとします。リクエストがどこから来たのかを把握し、正しいViewResultを返す必要があります。 –

+0

申し訳ありませんが、私は同意しません。これはビジュアルスタジオの自動生成コードが –

+0

を取るというアプローチです。リーは彼の答えを削除しました。なぜ私はその理由がわかりません。私はあなたの答えが働いていると思うし、問題はそれが良い技術かどうかです。私はリーの議論の論理をそれがそうではないと見ることができますが、あなたの解決策が一般的な慣行であるのならば、それはおそらく良い議論かもしれません。 – arame3333

0

従業員を渡す代わりに、選択した従業員IDのリストを詳細コントローラにPOSTしてから、リポジトリから対応する詳細を取得することができます。

+0

私はあなたがこれを行うことができるとは思わない。デフォルトでは、POSTからリダイレクト経由でGETにリスト/配列を渡すことはできません。 –

+0

さて、IDをコンマで区切ったパラメータとして渡し、カスタムモデルのバインダを使用するか、GETまたはPOST要求を詳細を示す最終アクションに送信するようにフォームに直接指示することができます。この方法では、再度リダイレクトする必要はありません。 –

関連する問題