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;
}

我无法理解为什么没有第二次调用上述方法,但调用了 GetData()。

请帮忙..

4

1 回答 1

1

我认为这是缓存,请尝试在您的控制器方法之前添加此行:

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

如果您希望将其应用于所有方法,也可以将此行放在控制器的顶部。

于 2013-10-25T08:42:05.807 回答