如果我离开页面并返回

时间:2017-12-20 17:56:17

标签: javascript c# asp.net webforms pagemethods

我有一个asp.net网络表单应用程序,我使用PageMethods从javascript调用c#代码隐藏方法。这首先工作正常,但如果我导航到另一个页面然后返回并触发该方法,则不会调用代码隐藏方法。 onSuccess方法仍然运行,但后面的代码中的方法永远不会被调用。我在这里不知所措,真的可以使用一些帮助。谢谢!

使用Javascript:

$(document).on("click", ".btnLinkEmployee", function () {
    var id = $(this).attr("id");

    var lbEmpHidden = document.getElementById('<%= lbEmpIdHidden.ClientID %>');
    lbEmpHidden.value = id;

    PageMethods.GetAvailableUsers(onSuccess, onError);
    function onSuccess(result) {
        var radWindow = $find("<%= rwLinkEmployee.ClientID %>");
        radWindow.show();
        var resultArr = JSON.parse(result);
        var rcb = $find("<%= rcbAvailUsers.ClientID %>");
        for (var i = 0; i < resultArr.length; i++) {
            var comboItem = new Telerik.Web.UI.RadComboBoxItem();
            comboItem.set_text(resultArr[i].UserName);
            comboItem.set_value(resultArr[i].Id);
            rcb.get_items().add(comboItem);
        }
    }
    function onError(result) {
        alert(result);
        console.log(result);
    }
});

C#

[WebMethod]
public static string GetAvailableUsers()
{
    using(var context = new TTEntities())
    {
        var allUsers = context.AspNetUsers.ToList();
        List<AspNetUser> users = new List<AspNetUser>();
        foreach(AspNetUser user in allUsers)
        {
            var result = context.Employees.Where(b => b.UserId == user.Id).FirstOrDefault();
            if(result == null)
            {
                users.Add(user);
            }
        }

        var js = new JavaScriptSerializer();
        var json = js.Serialize(users);
        return json;
    }
}

0 个答案:

没有答案