3

2つのドロップダウンリストを持つMVCWebページを作成しようとしています。2番目のリストの内容は、最初に選択したものによって異なります。

組み込みのMVC関数を使用してこれを行う決定的な方法はないように思われるので、自分でロールする必要があります。ただし、必要なすべての機能を取得するための最良の方法がわかりません...これは「Webフォームと同じ」です:)

これと同様の方法でドロップダウンを作成しまし

ただし、これを開発する方法がわからないため、最初にバインドされたときに最初のリストに「選択された」要素がある場合、これはページの読み込み時に2番目のリストを自動的にバインドするために流れます。

編集:明確にするために、フィルターされたリストを2番目のドロップダウンにバインドする機能があります。ただし、モデルに最初のドロップダウンの選択が含まれている場合、選択は正しく設定されていますが、2番目のドロップダウンリストがいっぱいになりません。

(私はMVCに不慣れであり、Javascriptは私にとって異星言語のようなものであると述べなければなりませんか?)

Edit2:これについてもう少し考えました。明らかに、私はWebフォームの開発に強い影響を受けており、MVCをまだ「取得」していません。モデルでキャッチする必要があることが本当にあると思います(つまり、2つのドロップダウンを設定するための情報がすでにある場合は、何らかの方法でコントローラーでキャッチして、事前に設定されたドロップダウンを作成する必要があります。 「ondatabound」タイプのメソッドを作成し、それをビューで呼び出すようにします(これが私の最初の意図でした)...次に、その方法を検討する必要があります:)

4

3 に答える 3

2

これは私が見つけたより良い実装の1つです。質問はここでも議論されています。

于 2011-05-26T20:25:56.443 に答える
1

タスクには3つのサブタスクが含まれています。

  1. 選択した値を使用して最初のddlの選択を変更する場合は、2番目のddlのアイテムのリストをajaxで取得する必要があります
  2. コントローラによって2番目のddlのアイテムのリストを取得するアクションを処理し、2番目のddlの定義されたコンテンツでビューを返す必要があります
  3. 処理されたアクションの結果を取得して、2番目のddlのコンテンツを更新する必要があります

<script type="text/javascript">

    $(function(){
        $( "form#ddl_1")。change(function(){
            $ .get({//リクエストを取得
                   url: "@ Url.Action(" MyController "、" GetList "})" + "/" + $(this).val、
                   成功:function(data){//更新
                       $( "form#ddl_2")。html(data);
                   }
        })
    });

</script>

デフォルトルートテーブルを使用する場合(またはカスタムでルートテーブルに特別なレコードを作成する必要がある場合)、「GetList」アクションはパラメータ「id」を取り、次のようにddl2のオプションのリストを含む部分ビュー(マスターページなし)を返す必要があります。

<option value="1">First</option>
<option selected value="2">Second</option>
<option value="3">Third</option>
于 2011-05-26T15:22:16.283 に答える
0

ダウンロード可能なソースコードを使用してasp.netmvcでカスケードドロップダウンリストを作成するには、このブログ投稿を参照してください。

于 2011-05-26T14:49:11.333 に答える