0

以下のようなドロップダウン リストがあり、ユーザー名とその値のリストが表示されます。

@Html.DropDownListFor(m => m.SelectedUser,
                                  Model.UsersSelectList,
                                  "-- Select One --",
                                  new { onChange = "users_onchange();" })

項目が変更されたときにアクションを呼び出す JavaScript は以下のとおりです。

    function users_onchange() {

        var selectedUserId = $('#SelectedUser').val();

        if (selectedUserId == "") {
            selectedUserId = 0;
        }

        $('#EmailAccountsContainer')
            .load('/MyEntityController/EmailAccounts', { userId: selectedUserId });
   }

EmailAccountsContainer は単なる div です。

<div id="EmailAccountsContainer"></div>

EmailAccounts アクションは userId を受け取り、別のドロップダウン リストを表示する部分ビューを返します。

問題は、Action の呼び出しが、Users ドロップダウン リストへの最初の変更後にのみ発生することです。2 番目のユーザーが選択されている場合、アクションへの呼び出しは行われません。

コントローラーでもキャッシュをオフにしました。

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class MyEntityController : Controller

これを修正する方法は?

4

2 に答える 2

1

onBodyタグ付きのonEventを使用てonchangeイベントをバインドします

$(document).ready(function(){

$('body').on('change', '#SelectedUser', function(){
  var selectedUserId =$(this).val();
   if (selectedUserId == "") {
        selectedUserId = 0;
    }
   $('#EmailAccountsContainer')
        .load('/MyEntityController/EmailAccounts', { userId: selectedUserId });
 });
});
于 2013-02-25T09:25:28.667 に答える
0

問題は、応答がブラウザにキャッシュされることです。

Jquery でこれを解決する方法については、次を参照してください。

jQuery .load 応答がキャッシュされないようにする

于 2013-02-25T09:27:35.240 に答える