【发布时间】:2011-02-15 11:39:19
【问题描述】:
我正在尝试构建一个简单的 Asp.Net 网站,该网站将列出一些文件。每个文件都需要检查。到目前为止,一切都很好。我在 web.config 中禁用了 ViewState,但我仍然在那里得到一个视图值。使用 ViewStateDecoder 2 应用程序对其进行解码后,我发现我的 ViewState 如下所示:
<?xml version="1.0" encoding="utf-16"?>
<controlstate>
<HybridDictionary>
<DictionaryEntry>
<String>__ControlsRequirePostBackKey__</String>
<ArrayList>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl01$d__bin</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl02$d__obj</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl02$ctl00$ctl00$d__Debug</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl02$ctl00$ctl00$ctl00$ResGen_read_1_tlog</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl02$ctl00$ctl00$ctl00$ResGen_write_1_tlog</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl03$d__Properties</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl03$ctl00$AssemblyInfo_cs</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$d____UpgradeReport__Files</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$ctl00$UpgradeReport_css</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$ctl00$UpgradeReport_xslt</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$ctl00$UpgradeReport__Minus_gif</String>
<String>ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$ctl00$UpgradeReport__Plus_gif</String>
</ArrayList>
</DictionaryEntry>
</HybridDictionary>
</controlstate>
我正在渲染的每个复选框都在其中!我怎样才能从那里取出复选框? 没有框触发PostBack。我试过fileCheckBox.AutoPostBack = false;,但没有解决任何问题。
所以我的问题是:如何防止我的复选框在 ViewState 中注册回发信息?
这是我的 UserControl 中为每个文件生成一个 CheckBox 的代码:
CheckBox fileCheckBox = new CheckBox();
fileCheckBox.AutoPostBack = false;
fileCheckBox.CssClass = "file " + GetExtension(file.Name);
fileCheckBox.ID = MakeId(file.Name);
fileCheckBox.Checked = true;
fileCheckBox.Text = file.Name;
children.Controls.Add(fileCheckBox);
禁用控件的 ViewState 也不起作用。
理论
我怀疑该控件执行Page.RegisterRequiresPostBack 或其他操作。可以预防吗?
【问题讨论】:
-
我在您发布的 ViewState 中没有看到 fileCheckBox。
-
复选框在哪里?
-
ctl00$ContentPlaceHolder1$DirectoryLister1$ctl04$ctl00$UpgradeReport__Plus_gif
-
添加了渲染fileCheckBox的代码...基本上它只是一个循环,通过将其存储在面板中的目录的文件。
标签: asp.net user-controls viewstate