【问题标题】:SkinID on custom control not working (asp.net)自定义控件上的 SkinID 不起作用(asp.net)
【发布时间】:2009-04-02 19:51:10
【问题描述】:

我从 syste.web.ui.webcontrols.button 派生一个控件。 然后我称它为buttonv2。 然后我向这个新类“int abc”添加一个任意属性,通过一个 get/set 访问器访问它,该访问器将它的值存储在 viewstate 中(如果 viewstate 值为 null,它也返回 0,即我尝试过无需设置即可访问)。

现在,每当我给“abc”一个值,然后在调试模式下观察它时,它会很好地命中访问器的“设置”部分,并输入我给它的值(即 55),然后紧接着,它碰到了我的代码“if (abc >0){}”的某些部分,它从视图状态中获取值为 0!

这仅在我使用 asp.net 'skins' 并在皮肤文件中预设 'abc' 值时发生。 (即)皮肤文件读取:<asp:buttonv2 runat="server" SkinID="bob" abc="55" />

在我的页面中我使用<asp:buttonv2 runat="server" SkinID="bob" /> 并且我的概率是 abc 总是等于 0?!

【问题讨论】:

    标签: .net skins accessor


    【解决方案1】:

    认为皮肤参数是在控件初始化期间分配的,而视图状态只会在 OnInit 完成后存储。

    来自 MS:“它仅在对页面请求执行 OnInit 方法后跟踪对这些属性的更改,并将更改保存到页面或控件的视图状态。”

    http://msdn.microsoft.com/en-us/library/ms178472.aspx

    http://msdn.microsoft.com/en-us/library/system.web.ui.statebag.aspx

    更多。

    如果您只是将值分配给“set”上的局部变量,然后将其从页面 init/load 上的“get”添加到 viewstate,会发生什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2021-05-09
      相关资源
      最近更新 更多