24

我知道我可以使用以下语法使用 jquery 调用页面方法

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Replace the div's content with the page method's return.
    $("#Result").text(msg.d);
  }
});

这适用于aspx页面,但它可以用于ascx页面吗?(网络控制)

我已经尝试了大约半个小时,因为我无法让它工作,我想知道它是否可能。

注意:为了清楚起见,当我尝试调用 ascx 页面时,我正在更新 jquery 中的 url :)

4

8 回答 8

27

不,因为 ascx 控件不代表可以从客户端计算机访问的真实 URL。它们纯粹是服务器端的,旨在嵌入其他页面。

您可能想要做的只是有一个 aspx 页面,它提供您当前在 ascx 文件中拥有的相同 html 片段。aspx 页面不一定需要提供完整的 html 文档(<html><body> 等),它可以只呈现您感兴趣的用户控件。

我们一直使用这种技术和 ingrid 插件,它需要一个回调 url 用于表格内容。

于 2009-02-23T19:45:21.307 回答
4

我认为直接请求 ascx 文件是不可能的——即将“MyControl.ascx”作为 url 参数提供给 $.ajax(..)。ascx 文件不直接由 Web 服务器公开。

我相信,您可以提供包含用户控件的 aspx 页面的 url——即,如果 MyControl.ascx 的实例位于 MyPage.aspx 上,则您必须提供“MyPage.aspx”作为 url 参数。听起来这可能会破坏您想要完成的目标。

编辑:克莱德在下面所说的似乎是个好主意。我自己也在做类似的事情,将 ascx 控件包含在一个页面上,该页面的工作或多或少只是为了托管它以便从客户端脚本访问。

于 2009-02-23T19:43:20.937 回答
2

我认为这是不可能的,因为用户控件并不意味着可以从外部访问(在页面之外)。我建议只使用脚本服务(网络服务)。

于 2009-02-23T19:43:13.277 回答
2

如何在 .aspx 页面上创建方法来使用来自控件的信息来完成它需要的操作?我知道人们会反复讨论应该包含或不包含哪些控件,但如果控件只包含属性和对象,我认为在 .aspx 页面中具有该功能可能对您有用。显然会有很多取舍。

于 2009-02-23T19:51:46.047 回答
2

这是一个通过 jQuery Web 服务调用呈现用户控件的示例

于 2009-02-24T19:33:22.713 回答
2

这是一种解决在 ASPX 页面中只能使用页面方法 (ScriptMethod) 的限制的方法。此示例使用页面基类和特殊属性构建代理,以装饰 ASCX 页面代码隐藏中的方法,并通过客户端访问这些方法。

使用 AJAX、JSON、基类和反射在 ASCX 用户控件中创建页面方法 (ScriptMethod)

于 2009-11-05T03:29:50.173 回答
1

我将创建一个通用处理程序 (.ashx),它加载控件并将其呈现的 HTML 写入响应。

于 2009-02-24T01:46:56.147 回答
0

您可以在 Default.aspx 或其他 aspx 文件中编写 GetDate() 方法,并且可以从 .ASCX 文件中调用该方法。

前任:

在 UserControl.ascx 中:

$.ajax({
 type: "POST",
 url: "Default.aspx/GetDate",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
 // Replace the div's content with the page method's return.
 $("#Result").text(msg.d);
}

});

在 Default.aspx.cs 中:

Public void GetDate() //Public static void { //your code here }

于 2014-05-30T16:50:47.113 回答