0

我正在为我的应用程序使用 ASP.NET 页面方法。一切都像魅力一样工作,但我不希望我的页面方法在页面中内联生成。

  1. 有什么方法可以将它们移动到 WebResource.axd 文件或类似文件中。我真的不想编写自己的代理只是为了将生成的代理从页面上移开。

  2. 我的基本页面中有多个页面方法。有没有办法告诉脚本管理器我想为特定页面包含哪些方法,因为我没有在所有页面上使用所有方法?

4

1 回答 1

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>
于 2009-08-24T13:10:45.783 回答