0

MVC 部分ビューにカスケード ドロップダウンがあります。DD1 は DD2 の値を駆動します。DD1 を選択すると、DB テーブルに基づいて、DD1 の値に基づいた正しい値が DD2 に取り込まれます。

私の考えは、DD2 を部分ビューにして、フォームにネストすることでした。次に、ajax を使用して、部分ビューを更新して DD1 の値を渡すように指示できます。

問題は、ビュー全体を送信するときです (DD1 と DD2 の両方と他の多くのものを使用して、DD2 にある値を取得するにはどうすればよいですか?

DD1 の変更時に JavaScript 関数をトリガーして JSON 呼び出しを行い、オプションを取得してから、javascript を使用して DD2 を正しい値に変更するのではなく、MVC を使用してこの問題を解決しようとしています。

どうすればいいですか?

4

2 に答える 2

0

ページ全体のポストバックを行う場合を除き、JavaScript を使用する必要があります。このタイプの場合は、javascript/ajax が最適です。個人的には、MVC に切り替えたとき、このすべてのビジネス ロジックが MVC モデルの外で行われていることを受け入れるのに苦労しました。しかし、最終的には、Web サイトを最適に機能させるものです (ユーザーはコードを見て、それがどれほど美しいかを知りません)。

とにかく、ページ全体を投稿しない限り、ページ/フォームの一部としてパーシャルがレンダリングされるため、パーシャルも機能しません。

同じコントローラー内のメソッドへのjson呼び出しをトリガーする最初のドロップダウンにonchangeイベントを追加するだけです...

...jquery...

$("#mydropdown").change(function() {
    $.post("/Controller/DropdownChangedJSON", { firstdropdownvalue: $("#mydropdown").val() }, function(data) {
    $("#seconddropdown").empty();
    //    loop through "data" to populate dropdown
}); //post
}); //mydropdown_change()

そしてあなたのコントローラーで:

public JsonResult DropdownChangedJSON(string firstdropdownvalue) {
    //get results
    List<datamodel> myarray = //something
    return new JsonResult { Data = new { success = true, rows = myarray } };
}

お役に立てれば

于 2013-06-11T15:21:32.773 に答える