大家好,我是asp.net的新手,
我在更新面板内部有一个复选框,每当我点击复选框时页面都会闪烁,最后发现添加ClientIDMode =“AutoID”控制闪烁,一切正常。
我想知道ClientIDMode与闪烁有什么关系, 通过msdn发现它生成了ClientID属性的值。
答案 0 :(得分:3)
首先从最终呈现的html控件中分析asp.net控件。
当您创建asp.net控件时,您可以为它们提供一个ID,使用此ID可以解决它们并在后面的代码和一般编程上对它们进行更改。
例如使用此代码
<asp:CheckBox id="check1" Text="option a" runat="server" />
您可以使用check1
获取其值,更改文本以及其他许多内容。
现在,asp.net必须在html页面上呈现这个复选框。当您对html页面进行任何控制时,您必须为他设置一个唯一的ID
和name
,并且他们会自动进行ID分配。
asp.net注意避免最终渲染控件之间的混淆,并根据您在asp.net端使用的结构制作自动ID。
例如,如果此控件位于自定义控件内,并且此控件位于母版页内,则asp.net将在最终ID上添加此名称,以避免冲突。
例如,在重复控件上存在冲突,您可以多次渲染相同的控件,因此您需要更改每个渲染的ID。
当您多次使用相同的用户控件时,可能存在冲突。
当您在同一页面上的不同用户控件上使用相同的ID时,可能存在冲突。
所有这些以及许多其他的asp.net来自客户端渲染时使用自动生成的id解决。
答案 1 :(得分:1)
是的,它确实与闪烁有关。
请参见this related question,以了解中继器不能很好地处理客户机ID的事实的另一个示例,这正是由于中继器最终执行了完全回发而不是部分回发而导致的问题。
设置ClientIDMode="AutoID"
是一种解决方法,它可以使Repeater从UpdatePanel内部成功完成应该做的部分postack。
由于存在Repeater错误,因此在没有ClientIDMode="AutoID"
的情况下,您正在经历完整的回发和整个页面加载。与部分页面加载相比,整个页面加载确实会导致闪烁。