C# 何时在页面加载上使用预渲染?

C# 何时在页面加载上使用预渲染?,c#,.net,asp.net,drop-down-menu,C#,.net,Asp.net,Drop Down Menu,相关问题: 在上面的问题中,我问我如何获得所有的控制,就像一个魅力,但有些东西不太适合,所以我想可能是我。我有下面的代码,但它没有操纵页面上的控件,但在我的理论上它应该可以工作 List<DropDownList> allControls = new List<DropDownList>(); ControlEnhancer.GetControlList<DropDownList>(Page.Controls, allControls); foreach (

相关问题:

在上面的问题中,我问我如何获得所有的控制,就像一个魅力,但有些东西不太适合,所以我想可能是我。我有下面的代码,但它没有操纵页面上的控件,但在我的理论上它应该可以工作

List<DropDownList> allControls = new List<DropDownList>();
ControlEnhancer.GetControlList<DropDownList>(Page.Controls, allControls);

foreach (DropDownList childControl in allControls)
        {
            foreach (ListItem li in childControl.Items)
            {
                li.Attributes.Add("title", li.Text);
            }

            childControl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title");
        }
List allControls=new List();
ControlEnhancer.GetControlList(Page.Controls,allControls);
foreach(所有控件中的DropDownList childControl)
{
foreach(childControl.Items中的列表项li)
{
li.Attributes.Add(“title”,li.Text);
}
childControl.Attributes.Add(“onmouseover”,“this.title=this.options[this.selectedIndex].title”);
}
这就是代码,GetControlList()代码,你可以从相关的问题中得到,它显示了如何获得所有控件,这只是我的操作。我正在尝试获取所有dropdownlist列表项,并为它们添加标题,以便获得工具提示


这是IE8的一个快速修复,在IE8及其以下的下拉框中剪切长文本

页面加载
发生得太快
Page_PreRender
是为浏览器实际呈现页面HTML之前的最后一刻,在许多情况下是设置用户控件属性的最佳位置


这是因为在web表单(页面)生命周期中,页面(以及页面中包含的用户控件…)中存在其他事件,这些事件有时会删除/替换/覆盖(真的)因此,将这些属性添加到浏览器中的唯一方法是在触发和处理所有其他生命周期事件之后,在
页面中添加这些属性。

实际上,在某些情况下,即使
预呈现
也可能太早(例如,在对使用
DataSourceID
的控件进行数据绑定期间,可以将
DropDownList
控件添加到控件树中)

还有两个更合适的事件:

  • 。此时,将创建所有控件,并且页面已准备好呈现

  • 。在保存视图状态和控件状态后发生。您在此处所做的任何更改都不会保留到视图状态


在您的示例中(添加客户端属性),我会使用
savestateplete
事件来避免不必要的视图状态膨胀。

原始问题获取控件列表,这个问题我需要获取dropdownlist控件,并通过添加text属性来操作它们,就像我在上面尝试的那样。更新:问题似乎与代码无关,而与位置无关执行,直到我强制在页面上回发问题不同altogther将很快发布答案。如果它在页面加载中运行,则需要在prerender事件中运行它。好的答案我建议大家阅读:为了更好地理解asp.net页面生命周期。“页面预呈现是页面HTML实际呈现之前的最后一刻”-不正确,稍后会有事件
PreRenderComplete
SaveStateComplete
。请参阅我的答案。感谢您积极改进答案。谢谢。