2009-07-30 33 views
0

我正在爲我的應用程序使用ASP.NET頁面方法。一切工作都像魅力,但我不希望我的頁面方法內聯生成在頁面中。從頁面移動ASP.NET頁面方法代理

  1. 是否有任何方法將它們移動到WebResource.axd文件或類似的東西。我真的不想寫我自己的代理,只是將生成的代理從頁面移開。

  2. 我在我的基頁中有多個頁面方法。有沒有辦法告訴腳本管理器哪些方法,我想包括特定的頁面,因爲我沒有使用所有頁面上的所有方法?

回答

2

我有我的 基頁多頁的方法。有沒有辦法告訴 腳本管理器哪些方法我想要 包含在特定頁面中,因爲我 沒有在所有頁面上使用所有方法?

我不確定這是否可能。然而,我想要做的是將實際頁面本身中特定頁面的特定方法,而不是基本頁面中的特定方法。

您可以做的是使用asmx webservices,而不是使用頁面方法從JavaScript訪問服務器端邏輯。

[System.Web.Script.Services.ScriptService] 
public class MyWebService 
{ 

    [WebMethod] 
    public string GetData(int id) 
    { 
     //do some work 
     //return result 
    } 

} 

在你的aspx或ascx的代碼,你就以下

function someFunction(){ 
    WebServiceNamespace.MyWebService.GetData(123, onSuccessCallback, onErrorCallback); 
} 

function onSuccessCallback(result){ 
    //process your result. Usually it is encoded as JSON string 
    //Sys.Serialization.JavaScriptSerializer.deserialize(...) can be used for deserializing 
} 

function onErrorCallback(){ 
    //display some info 
} 

你將不得不把眼光放在如何使你的web服務的返回對象進行編碼。通常它被編碼爲Json。我現在不記得是否必須在web.config中明確指定它。

//編輯:
我忘了。您可以使用asp.net的ScriptManager用於註冊腳本和Web服務:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Scripts> 
     <asp:ScriptReference Path="~/scripts/WebServiceScripts.js" /> 
    </Scripts> 
    <Services> 
     <asp:ServiceReference Path="~/Services/MyWebService.asmx" /> 
    </Services> 
</asp:ScriptManager> 
+0

的問題是,我需要被提上根據用戶的設置頁面控件的頁面的方法。我希望避免寫代理,因爲我需要在兩個地方重構。如果我們寫了太多的方法,我會將它們移動到一個Web服務。我還需要處理認證。 PageMethods對我來說是完美的,只是我希望他們在控件中,但如果我需要,我會寫一個Web服務。 – Stilgar 2009-08-26 09:26:18