无法在DOM中保留自定义属性?

时间:2010-09-07 08:39:21

标签: c# javascript asp.net browser viewstate

一个非常简单的asp.net webform页面。

<asp:DronDownList id="ddl" runat="server">
<asp:Button id="btn" runat="server" Text="Do nothing but post back" />

在Page_Load中:

if (!IsPostBack)
{
   ListItem item = new ListItem("text1","value1");
   item.Attributes["custom"] = "CustomValue";
   ddl.Items.Add(item);
}

它渲染的html :(看起来不错)

<select ...>
  <option value="value1" custom="CustomValue">text1</option>
</select>

单击按钮后,我查看来源,custom="CustomValue"已消失。 我知道你会说“这是因为你把它放在if (!IsPostBack)区块”。当然,如果我删除if语句,一切都会好的。但为什么要渲染其他STANDARD属性?因为我把它放在if语句中,我想输出将是:

<select ...></select>   // i suppose no options in it! 

为什么ASP.NET“选择”属性?

2 个答案:

答案 0 :(得分:1)

这是一个权衡。控件必须保持它在视图状态中支持的每个属性的值(非默认值)。因此,视图状态大小和页面大小自然会受到影响。因此,控制开发人员只需将最常用的属性备份到视图状态即可。这里的情况也是如此 - 控制开发人员决定不将自定义属性支持到视图状态。

答案 1 :(得分:0)

ASP .NET不会在ViewState中保存自定义属性。