2011-07-09 12 views
0

私はほとんどの日、これに対して私の頭を抱きました。私はMVCの動く部分を十分に理解しているとは思わないし、リストボックスとデータバインディングに関する解決策を得るためにいくつかの助けが必要です。子テーブルを表すリストボックスを使用してモデルバインディングからデータを取得することはできません

本質的には、モーダルダイアログを使用してデータのグリッドを選択し、その選択をリストボックスに表示させたいとします。 (それは働く)。私はその後、コントローラにそのリストボックスをPOSTし、リストボックスにあった各項目の子レコードを持っています(機能しません)。

どのようにすべてのものを優雅にMVCから取得し、それらをデータベースに取り込むことができますか?

[設定]

IはSQLテーブルを表すオブジェクト、WorkOrderはを有します。 WorkOrderには、子テーブルを表すWorkerRequestsコレクションがあります。 WorkOrderは親です。

私は新しいWorkOrdersを作成するフォームを持っており、モーダルダイアログを通じてWorkerRequestsを追加できます。 WorkerRequestレコードは、ダイアログボックスで選択した後にリストボックスに表示されます。

このダイアログでは、javascriptのHTMLOptionsCollection add(Element)関数を使用して要素を追加します。それは動作します。

投稿すると、データバインダーは追加された要素を投げています。私はHttpContextの生データを見つけることができないとバインダーはそれを利用可能にしていません。

答えて

0

あなたのリストボックスアイテムは、選択されていない場合、投稿されません。理想的には、それらを選択するか、コントローラーメソッドにポストされる隠しフォームで作成する必要があります。

は、それが出発点としてそこに現れるかどうかを確認し

 
[HttpPost] 
public ActionResult Index(FormsCollection collection) 
{ 
    var item = collection["whateverName"]; 
} 

という名前のアクションメソッドのパラメータを含めます。 ここにあなたのコードなしで何が起こっているのか正確には分かりません。

あなたのモデルダイアログボックスは何を行いますか?リストボックスに追加しますか?あなたのダイアログはあなたのコントローラにポストバックしてダイアログを作成しますか?ダイアログの内容はフォーム内にありますか? jQueryのダイアログを使用していて、ダイアログがフォーム内にある場合、jQueryはダイアログを表示するときに実際にフォーム外にポップします。フォームに再び追加する必要があります。このような場合は、その詳細を更新しますが、ここで何が起きているかどうかを確認してください。

関連する問題