我試圖從客戶端方(從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