从页面中移动 ASP.NET 页面方法代理

发布于 2024-07-29 19:36:56 字数 247 浏览 8 评论 0原文

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

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

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

I am using ASP.NET Page Methods for my application. Everything works like charm but I do not want my page methods generated inline in the page.

  1. Is there any way to move them to a WebResource.axd file or something similar. I don't really want to write my own proxy just to move the generated one away from the page.

  2. I have multiple page methods in my base page. Is there a way to tell the script manager which methods I want included for the particular page as I am not using all methods on all pages?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花开半夏魅人心 2024-08-05 19:36:57

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

我不确定这是否可能。 然而,我要做的是将特定于实际页面本身而不是基页面中的特定页面的方法移动。

您可以做的是使用 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>

I have multiple page methods in my
base page. Is there a way to tell the
script manager which methods I want
included for the particular page as I
am not using all methods on all pages?

I'm not sure whether this is possible. What I would do then however is to move your methods that are specific to a certain page in the actual page itself rather than in the base page.

What you could do is to use asmx webservices instead of using page methods for accessing server-side logic from JavaScript.

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

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

}

In your aspx or ascx code you do the following

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
}

You would have to look on how the returning object of your webservice is encoded. Normally it is encoded as Json. I don't remember now whether this has to be specified explicitly in your web.config.

//Edit:
What I forgot. You can use the asp.net ScriptManager for registering your scripts and web services:

<asp:ScriptManager ID="ScriptManager1" runat="server">
   <Scripts>
      <asp:ScriptReference Path="~/scripts/WebServiceScripts.js" />
   </Scripts>
   <Services>
      <asp:ServiceReference Path="~/Services/MyWebService.asmx" />
   </Services>
</asp:ScriptManager>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文