0

ASP.net MVC 2.0 アプリケーションに取り組んでいます。Ajaxフォームを使用しています。その中にドロップダウンとボタンがあります。

ボタンをクリックした後、Ajax リクエストが成功した場合、ドロップダウンをリロードしたいと思いました。

そのため、Ajax フォームのコールバック関数内で jquery Ajax 関数を呼び出しています。

その jquery Ajax 関数では、新しいデータを取得するコードを記述し、ドロップダウンにバインドして、新しいデータで再ロードされるようにしています。

ここで、初めてすべてが正常に機能します。しかし、次回ボタンをクリックすると、Ajax jquery関数が呼び出されますが、コントローラーアクションメソッドにはヒットしていません。

コード:

ここに、私のjquery関数があります:

<script type="text/javascript">
        function GetData() {
            $.getJSON("/Home/GetUsers", null, function (data) {
                var selectList = $("#ddlUsers");
                selectList.empty();
                alert("Inside Get Json method of jquery Ajax");
                var defaultoption = $('<option>').text("--Select--").val("");
                selectList.append(defaultoption);
                $.each(data, function (index, optionData) {
                    var option = $('<option>').text(optionData.Text).val(optionData.Value);
                    alert(option);
                    selectList.append(option);

                });
            });
        }
        function Callback() {
            GetData();
            alert("Sucessfully done");
        }
        function Failed() {
            alert("Sorry, an error occured while processing your request");
        }

コントローラー内のメソッド:

[HttpGet]
    public JsonResult GetUsers()  ----> Method that is called from GetData() Ajax call
    {
        var data = GetUsersList();
        return Json(data, JsonRequestBehavior.AllowGet);
    }

public SelectList GetUsersList()
{
    Db Fectch

    return data;
}

上記のメソッドが 2 回目に呼び出されないのに、GetData() が呼び出される理由を理解できません。

助けてください..

4

1 に答える 1

1

キャッシュだと思います。コントローラーメソッドの前に次の行を追加してみてください。

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

すべてのメソッドに適用する場合は、この行をコントローラーの上部に配置することもできます。

于 2013-10-25T08:42:05.807 に答える