使用jquery调用ascx页面方法
我知道我可以使用以下语法使用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 🙂
不,因为ascx控件不代表可以从客户端计算机访问的真实URL。 它们纯粹是服务器端,意味着嵌入其他页面。
您可能想要做的只是有一个aspx页面,它提供了您在ascx文件中当前拥有的相同html片段。 aspx页面不一定需要提供完整的html文档(
等),它只能呈现您感兴趣的用户控件。我们一直使用这种技术使用ingrid插件,这需要一个表内容的回调URL。
我不认为直接请求ascx文件是可能的 – 即将“MyControl.ascx”作为url参数提供给$ .ajax(..)。 Web服务器不直接公开ascx文件。
我相信,您可以提供包含用户控件的aspx页面的url – 即如果MyControl.ascx的实例存在于MyPage.aspx上,则必须提供“MyPage.aspx”作为url参数。 听起来这可能会破坏你想要完成的目的。
编辑:克莱德下面说的似乎是一个好主意。 我自己做了类似的事情,将ascx控件包含在一个页面上,该页面的工作或多或少只是托管它以便从客户端脚本进行访问。
我不认为这是可能的,因为用户控件不能在外部(页面外)访问。 我建议只使用脚本服务(Web服务)。
如何在.aspx页面上创建方法,使用控件中的信息执行所需的操作? 我知道人们会回过头来讨论哪些控件应该包含或不包含,但如果控件只包含属性和对象,我认为在.aspx页面中使用该函数可能对你有用。 显然会有很多权衡取舍。
这是通过jQuery Web服务调用呈现用户控件的示例 。
这是一种解决仅在ASPX页面中可用的Page方法(ScriptMethod)的限制的方法。 此示例使用页面基类和特殊属性构建代理,以装饰ASCX页面代码隐藏中的方法,并通过客户端访问这些方法。
使用AJAX,JSON,基类和reflection在ASCX用户控件中创建Page方法(ScriptMethod)
我将创建一个通用处理程序(.ashx),它加载控件并将其呈现的HTML写入响应。
您可以在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 }