这可能是一个非常虚伪的问题,但我正在尝试使用AJAX C#和asp.net实现一个简单的Web方法,这里是代码:
C#代码背后:
using System.Web.Services;
public partial class Controls_LeftNavigation : System.Web.UI.UserControl
{
[WebMethod]
public static string MyMethod()
{
return "Hello";
}
}
Asp.net页面:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<script type="text/javascript">
function pageLoad() {
var acc = $find('<%= Accordion1.ClientID %>_AccordionExtender');
acc.add_selectedIndexChanging(ClickHandler);
}
function ClickHandler() {
// Do whatever you want.
alert('Something is happening!');
alert(PageMethods.MyMethod());
}
</script>
单击导航按钮时,会显示“正在发生的事情!”消息框但不显示页面方法警报。
我正在使用ASP AJAX工具包手风琴,这就是页面加载事件将单击处理程序事件添加到该控件的原因。
答案 0 :(得分:2)
页面方法是异步的,你必须像这样提供一个onSuccess处理程序:
function OnSuccess(result) {
alert(result);
}
function ClickHandler() {
PageMethods.MyMethod(OnSuccess);
}
您还需要阻止SelectedIndexChanging
事件进行回发,否则页面将无法处理返回的结果。
答案 1 :(得分:2)
不支持用户控件的PageMethods。