【问题标题】:ASP.Net Textbox value lost during postback when you have a very large number of Textboxes on page当页面上有大量文本框时,ASP.Net 文本框值在回发期间丢失
【发布时间】:2012-02-24 01:02:48
【问题描述】:

我有一个 ASP.NET 页面,我在其中动态创建了 1000 多个文本框。页面的初始创建和显示工作正常,但是当我进行回发时,我发现控件状态(文本)仅恢复了前 997 个文本框。回发期间不会恢复所有其他文本框的 Text 属性。

我没有看到任何错误 - 我只是看到文本框是空白的。

有没有其他人遇到过这个问题。在具有大量控件或大视图状态的页面上,我需要做些什么特别的事情吗?

这里有一些代码来演示。

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    void CreateTextBoxes(bool load)
    {
        for (int i = 0; i < 1200; i++)
        {
            TextBox txt = new TextBox();
            txt.ID = string.Format("{0}", i);
            div.Controls.Add(txt);
            if (load)
                txt.Text = string.Format("Count {0}", i + 1);
        }
    }

    protected override void CreateChildControls()
    {
        CreateTextBoxes(!this.IsPostBack);
        base.CreateChildControls();
    }
}

【问题讨论】:

  • 第998个文本框发生了什么,你能放个断点吗?
  • 我无法重现问题。我确实必须将它添加到 web.config 文件中才能显示一个包含 1000 多个控件的页面,尽管
  • 完美解决了它。知道它是这样的,但我只是指望找不到设置。谢谢大家。

标签: asp.net


【解决方案1】:

如果表单上有超过 1000 个控件,请将以下键添加到 appSettings 元素下的 web.config,并适当地设置值: &lt;add key="aspnet:MaxHttpCollectionKeys" value="2000"&gt;&lt;/add&gt;

查看这篇文章了解更多详情: http://blogs.msdn.com/b/paulking/archive/2012/01/16/using-an-http-module-to-assist-in-adjusting-the-value-of-aspnet-maxhttpcollectionkeys-imposed-by-ms11-100.aspx

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多