.aspx有效,但.ascx没有...为什么以及如何修复?

时间:2011-10-14 19:33:55

标签: asp.net ajax ascx

我想在自定义Web控件中放置一个ASTreeView Web控件,ASTreeView示例代码如下:

<ct:ASTreeView ID="astvMyTree" 
                    runat="server"
                    ...
                    LoadNodesProvider="~/ASTreeViewDemo5.aspx"

                    .../>

LoadNodesProvider是加载节点时调用的页面ajax ...但是如果我将提供程序更改为我的.ascx文件,则它不起作用:

LoadNodesProvider="~/ASTreeViewDemo5.ascx"

它甚至没有通过.ascx文件的Page_Load部分 虽然这可能与astreeview本身有关,但我想知道问题可能是什么?我能做些什么来解决它? 谢谢!

4 个答案:

答案 0 :(得分:4)

这是因为ascx必须有一个容器即Page。你不能像使用Page一样使用它。

答案 1 :(得分:4)

ASPX是一个页面,ASCX是一个用户控件。你不能ajax调用一个控件,所以你可能希望它是一个带有控件的页面。

答案 2 :(得分:1)

虽然我不清楚LoadNodesProvider应该做什么,但如果你想封装一些代码或通过AJAX运行一个进程,你有几个选择。一种方法是创建一个AJAX方法可以调用的Web服务(您可以使用WCF)。另一种选择是创建一个http处理程序(ASHX扩展通常表示这一点)。使用ASPX或ASCX对我来说并没有多大意义。 Proco和Tomas对于ASCX文件是正确的,这些是Usercontrols并且不是独立的对象。

答案 3 :(得分:0)

如果你真的,真的想要使用ASPX页面/ ASCX控件,那么我想最好创建一个有一个占位符的空白ASPX页面,然后附加你的用户控件(基于查询字符串参数或其他东西)我想)占位符为你的AJAX控件呈现内容