2009-07-30 92 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