【发布时间】:2011-03-21 05:25:53
【问题描述】:
我正在尝试从客户端访问服务器端方法(即从 javascript 调用服务器方法)。我正在使用 .NET 4.0 Visual Studio 2010 Ultimate。我正在构建一个 Web 控件(ascx)。 我有一个 ascx 页面(控件的 html)和一个 ascx.cs 页面: ascx 如下:
<%@ 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 运行时管理器定义。 那么,有没有可能 PageMethods 在 .net 4.0 中不可用?
无论如何,是否有另一种方法可以解决有关从客户端脚本调用服务器端方法的问题?我知道 pagemethods 只不过是一种 Web 服务,在考虑我的 Web 应用程序的安全性时,这让我有点困扰。
编辑:
嗯,看来 jQuery 是一个有效的解决方案......但它能够让我调用服务器端方法吗?我希望是因为我们在谈论 ajax 对吧?
编辑 2:
啊...另一个问题...我尝试使用 webmethod,但是当我将 scriptmanager 和方法的属性 WebMethod 设置为指定时,它不起作用让我在 javascript 中找不到 PageMethods 时出错...。
是因为我在 ascx 里面工作??????可能的?????那么,即使是 jQuery 也无济于事......
【问题讨论】:
-
查看此示例:tugberkugurlu.com/archive/… 它可能会有所帮助。
标签: c# asp.net asmx pagemethods