我试图从客户端方(从JavaScript调用服务器方法)访问服务器端方法。我正在使用.NET 4.0 Visual Studio 2010 Ultimate。我正在构建一个Web控件(ascx)。 我有一个ASCX页(控件的HTML)和ascx.cs页: 的ASCX如下:ASP.NET 4.0 - 从客户端方法调用服务器端方法 - PageMethods
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BoxButton.ascx.cs" Inherits="ATB.Controls._BoxButton" %>
<asp:ScriptManager ID="SM_ScriptManager" runat="server" EnablePageMethods="true" />
<script type="text/javascript">
function handle() {
PageMethods.manageHandler();
}
</script>
<span id="BoxButton_HtmlSpan" runat="server" onclick="handle();" style="background-color:#efefef;border-style:solid;border-width:1px;border-color:#cccccc;height:25px;text-align:center;padding:3px 3px 3px 3px;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;color:#333333;line-height:15px">
<asp:Label runat="server" Text="Button" id="Text_Label"></asp:Label>
</span>
而且ascx.cs文件是这个(只是打印功能):
[System.Web.Services.WebMethod]
public static string manageHandler() {
int i = 0;
System.Console.WriteLine("Ciao");
return "Hello";
}
好吧,你可以看到我试图通过pagemethods来解决我的问题,它不起作用,我总是getPageMethods未被JScript运行时管理器定义。 那么,有没有可能在.net 4.0中没有PageMethods?
无论如何,有没有解决有关服务器端方法从客户端脚本调用问题的方法?我明白,pagemethods只不过是一种web服务,在我的web应用程序中考虑安全性时,这让我感到困扰。
编辑:
好,似乎jQuery是一个有效的解决方案......但它是能够让我打电话给一个服务器端的方法?我希望是因为我们正在讨论ajax的权利?
编辑2:
啊......另一个问题......我试图用一个WebMethod,但它不工作让我的错误没有找到PageMethods在JavaScript中,而我设置的ScriptManager和方法的属性作为的WebMethod指定....
是因为我在一个ascx里面工作吗?可能?????然后,即使jQuery也不会帮助....
检查此示例:http://tugberkugurlu.com/archive/asp-net-web-forms---calling-web-service-page-methods-using-jquery它可能有帮助。 – tugberk 2011-12-17 19:44:46