【发布时间】:2013-06-17 02:38:56
【问题描述】:
我有一个名为 MakeRedemption.aspx 的 aspx 页面,其中有一个 UserControl (Search.ascx)。
MakeRedemption.aspx 中有 Page_Prerender()。
我想问一下,如何通过 Search.ascx 中的函数调用 MakeRedemption.aspx 中的 Page_Prerender()。
如下:
实际上,我的用户控制页面中的某个功能存在循环。
Page_Prerender (MakeRedemption.aspx) 将在所有循环完成后触发。
我想要的是:
每次在循环的每个项目结束之前,我都会触发 MakeRedemption.aspx 上的 Page_Prerender 来做一些事情。
类似的东西:
for (int i = 0 ; i < 10 ; i ++)
{
//some code here
// I would like to trigger Page_Prerender here to do something before end of the loop.
} // the Page_Prerender (in MakeRedemption.aspx) trigger after all the loop finish.
意味着这个for循环的i = 10,因此,我想在for循环内触发Page_Prerender 10次。
我在 aspx 文件中的 PreRender 函数如下:
protected void Page_Prerender(object sender, EventArgs e)
{
//some code here
}
不确定这个 Page_PreRender() 是否被认为是自动生成的 OnPreRender()。
我想触发这个 Page_Prerender() 而不是 OnPreRender() 。
对不起,如果我问了一个愚蠢的问题,我是编程和 c# 的新手。
请多多指教。
谢谢。
【问题讨论】:
-
所以让我直截了当地说,您想让子控件 (Search.ascx) 调用其父控件 (MakeRedemption.aspx) 10 次,每次循环迭代一次?究竟要做什么?我对父页面需要从搜索控件执行 10 次的操作感到困惑。从子控件中调用 ASP.NET 页面生命周期的一部分通常是一个糟糕的设计选择,但我很好奇您为什么觉得有必要这样做。
-
谢谢卡尔。实际上,Search.ascx 中有一个 AddCart() 函数,当我在调试模式下运行这个系统时,我发现每次运行完 AddCart() 后,它也会运行 Page_Prerender()。但这是在 i = 1 的情况下。现在我想更改 i,可能是 10 或其他数字,但 Page_Prerender() 只会在最后一个 i 之后运行。我想要的是每次 i 触发 Page_Prerender()。如果我的问题有问题,请告诉我。 :)
-
AddCart() 和 Page_PreRender() 之间的逻辑关系是什么? Page_PreRender() 是否更新了显示购物车中另一个项目的 UI 元素?
-
你好,卡尔。其实我是增强其他人的项目,这个项目开发者已经不在了,所以我没有一次可以问。正如我对代码的理解,AddCart() 和 Page_PreRender() 之间没有关系,我猜是,当 AddCart() 是在用户控制页面(Search.ascx)中运行的最终代码时,它会自动在父页面 (MakeRedemption.aspx) 中触发 Page_PreRender()。现在,如果我只是在 for 循环中调用 AddCart(),所有用户输入的数据将与最后一个 i 相同,尽管 i 每个 i 键入不同的数据(弹出窗口)。
标签: c# user-controls parent prerender