我有一个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;
}
}