Web用户控件和结构的交互(有概念上的困难)

本文关键字:概念上 交互 用户 控件 结构 Web | 更新日期: 2023-09-27 18:07:50

在我的asp .net c#项目中,我有一个默认的页面。aspx上,我已经放置了2个组件。所以我总共有:

1) default.aspx (main page, not doing much code in it)
2) wuc_Lookup.ascx (doing a lot here, grabbing data, setting session, etc)
3) wuc_PageMessages.ascx (has a couple of panels and labels for message output

)

目的是在应用程序的任何页面中使用3)。1)和2)已经开始工作了。我的问题是Page_Load序列是:

第一个默认负载第二次wuc_pageMessage加载第三次wuc_lookup加载

这样做的问题是wuc_pageMessage在 wuc_lookup运行后只有是相关的。

我的意图不是在Page_Load中为消息wuc_pageMessage控件添加代码,因为我希望能够在wuc_lookup的组件加载期间调用一个方法来发布消息。我这样做是因为只有在wuc_lookup之后,我才设置用于消息值的会话。

如果我把代码放在wuc_lookup中,使用this.parent.findControl语法来操作代码在服务器控件(面板和标签),我实际上得到了值…

但是当我试图撕扯该代码并将其放入wuc_pageMessage的代码后面,然后从wuc_lookup调用该方法时,它已经超出了范围或上下文…

所以我试着改变这个。通过传递httpContext.current.handler将其转换为page…那没有用……然后我尝试从调用组件传递对象发送器…这也没起作用。它们都没有父属性,或者它是空的,这让我相信,一旦wuc_PageMessages。这是一个死交易,直到发生转发,这是丑陋的,我不想做的事情。

我有一些实施问题,我不知道该怎么做。我已经被这事折腾了八个小时了是不是有什么我没发现?

我想远离意大利面代码。我不想把代码分散到3个不同的文件中。理论上,我应该只需要其中2个就可以互相交谈。我不希望代码隐藏在默认情况下。它基本上就是一个容器。我想从wuc_Lookup触发wuc_pageMessage。不让它"in"wuc_Lookup。ascx(对等网络用户控件)我希望这始终是一个对等关系。

Web用户控件和结构的交互(有概念上的困难)

尝试将wuc_PageMessages逻辑从page_load移动到page_prerender事件

如果你要使用preRender,你会在默认情况下使用它。因为这个事件在wuc_lookup之后触发。由于某些原因,预渲染器不会在组件上启动。所以,是的,这只解决了部分问题。我不确定如何让已经加载的wuc_PageMessages组件重新进入作用域。如果你试图在一个已经加载的组件上引用组件,你会得到一个null,就像它们不在那里或不在作用域中一样…有人有什么想法吗?