【问题标题】:ClientIDMode="AutoID" in Asp.netAsp.net 中的 ClientIDMode="AutoID"
【发布时间】:2014-02-25 02:58:13
【问题描述】:

大家好,我是asp.net的新手,

我在更新面板内的转发器中有一个复选框,每当我单击该复选框时页面就会闪烁,最后发现添加 ClientIDMode="AutoID" 控制闪烁并且一切正常。

我想知道 ClientIDMode 这与闪烁有什么关系, 通过msdn发现它生成了ClientID属性的值。

【问题讨论】:

  • 与闪烁无关。
  • 你能解释一下 ClientIDMode @Șhȇkhaṝ
  • 你可以通过这个link

标签: c# asp.net checkbox postback repeater


【解决方案1】:

首先从最终呈现的 html 控件中分离 asp.net 控件。

当您制作 asp.net 控件时,您会给它们一个 ID,使用此 ID,您可以寻址它们并在代码后面和一般编程上对它们进行更改。

以这段代码为例

<asp:CheckBox id="check1" Text="option a" runat="server" />

您可以使用check1 获取它们的值、更改文本以及许多其他操作。

现在,asp.net 必须在 html 页面上呈现此复选框。当您对 html 页面进行任何控制时,您必须为他设置唯一的 IDname,然后自动分配 ID。

asp.net 注意避免最终渲染控件之间的冲突,并根据您在 asp.net 端使用的结构自动生成 ID。

例如,如果此控件位于自定义控件中,并且此控件位于母版页中,asp.net 也会在最终 id 上添加此名称,以避免冲突。

冲突可能存在于例如重复控件上,您多次渲染同一个控件,因此您需要更改每个渲染的 id。

当您多次使用同一个用户控件时,可能会存在冲突。

当您在同一页面上的不同用户控件上使用相同的 id 时,可能会存在冲突。

所有这些和许多其他 asp.net 都通过客户端渲染上自动生成的 id 来解决。

【讨论】:

  • 感谢确实有帮助,但这与闪烁有什么关系@Aristos
【解决方案2】:

是的,确实与闪烁有关。

请参阅this related question 以了解中继器不能很好地处理客户端 ID 的另一个示例,这正是导致此问题的原因,因为它们最终会执行完整的回发而不是部分回发。

设置ClientIDMode="AutoID" 是一种解决方法,它允许Repeater 成功地执行它应该在UpdatePanel 中执行的部分postack。

由于这个中继器错误,没有ClientIDMode="AutoID",您将经历完整的回发和完整的页面加载。与部分页面加载相比,完整页面加载确实会导致闪烁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2013-05-26
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多