1

最近,我发现使用: someControl.Attributes.Add("customAttr", "customVal") 并不兼容所有的网络浏览器。自定义属性的推荐注册是:

Page.ClientScript.RegisterExpandoAttribute(someControl.ClientID, "customAttr", "customVal")

好的,这就是问题所在。我正在使用 ListView 生成自定义控件。在某些情况下,必须刷新/重新创建 ListView。发生这种情况时,ListView 项尝试注册(在本例中为重新注册)expando 属性,页面将引发以下错误:

已存在具有相同键的条目。

显然 RegisterExpandoAttribute() 的行为不像 Page.Cache 对象,如果键已经存在,则覆盖当前值。我可以轻松解决这个问题,但我想知道是否有更优雅的解决方案。例如,没有类似的方法: Page.ClientScript.IsExpandoAttributeRegistered(...)

有任何想法吗?

4

1 回答 1

1

如果您正在创建自定义控件,请尝试在RegisterExpandoAttribute控件期间进行调用PreRender。如果控件已被删除并且这样做解决了我的问题,我仍然在注册属性时遇到问题。我想如果你调用控件RegisterExpandoAttributePreRender那么每个页面加载不应该多次调用它。

于 2013-03-25T13:50:02.720 回答