加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何从View中获取asp:CheckBox? (__ControlsRequir

发布时间:2020-12-16 03:51:48 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试构建一个简单的Asp.Net网站,列出一些文件.需要检查每个文件.到现在为止还挺好.我在web.config中禁用了ViewState,但我仍然以那里的视图值结束.使用ViewStateDecoder 2应用程序解码后,我发现我的ViewState看起来像这样: ?xml version="1.0" encodin
我正在尝试构建一个简单的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等.这可以预防吗?

解决方法

CheckBox(也是TextBox和DropDownList)不仅使用ViewState来保存它们的值.他们实现IPostBackDataHandler以保持其在PostBack上的值.你必须找到自己的解决方案来解决这个问题,因为禁用ViewState对你没有帮助.

有关详细信息,请参阅link.

但是,要使控件不使用ViewState,可以对从System.Web.UI.Control派生的每个控件使用EnableViewState =“false”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读