2010-07-26 179 views
1

我試圖從客戶端方(從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也不會幫助....

+0

檢查此示例:http://tugberkugurlu.com/archive/asp-net-web-forms---calling-web-service-page-methods-using-jquery它可能有幫助。 – tugberk 2011-12-17 19:44:46

回答

1

我相信PageMethods只在上可用,而不是在用戶控件上。

+0

嗯,我想過但是在瀏覽關於這個參數的微軟msdn頁面時沒有發現任何限制......無論如何,你知道如何用輸入pagemethods來解決這個問題嗎? – Andry 2010-07-26 17:52:21

+0

我沒有理由知道爲什麼你不能僅僅使用你選擇的WCF服務 - RESTful或不是,返回XML或JSON,所有你的選擇。 – 2010-07-26 18:01:42

+0

約翰是對的;頁面方法技巧只適用於ASPX頁面後面的代碼。如果頁面方法的工作方式符合您的要求,ASMX ScriptService將爲您提供相同的功能,而無需與WCF爭執。 – 2010-07-27 00:31:39

0

我會推薦使用jQuery,它更優雅。 Here's an example

+0

更改他的調用方法並不能解決他的問題。 – 2010-07-26 21:47:16

+1

最後一段問:「無論如何,解決有關從客戶端腳本調用服務器端方法問題的另一種方法?」我總是發現PageMethods是一個痛苦的屁股,而jQuery更容易使用。這就是爲什麼我推薦它 – Vedran 2010-07-26 21:53:24

+0

-1:jQuery如何以任何方式更改服務器端? – 2010-07-27 01:03:12

0

我發現多了一個教程,jQuery來做到這一點:Calling a server side function from JQUERY

希望這將有助於。

+0

請直接鏈接到文章,而不是使用網址縮寫。人們喜歡看鏈接在哪裏。 – 2010-07-27 12:20:33

相關問題