【问题标题】:Keep programmatically created html controls after postback回发后保留以编程方式创建的 html 控件
【发布时间】:2011-01-03 04:43:16
【问题描述】:

我正在通过“添加文本框”按钮在页面上动态添加 HTML 输入控件,但在回发后最终它们被冲走。是否有一种简单且良好的做法可以帮助我在页面回发后保留控件及其值。

谢谢。

编辑:

  • 我正在使用 Javascript 在页面上创建动态控件
  • 我不处理文件上传,只是创建自定义字段。

我认为我需要重写 SaveViewState 和 LoadViewState 事件以将我的控件保持在 ViewState 中。

【问题讨论】:

  • 您是使用 javascript 还是 C# 添加输入控件?
  • @Madi : 我正在使用 Javascript 在页面上添加控件。

标签: c# asp.net javascript html


【解决方案1】:

查看以下内容:
http://urenjoy.blogspot.com/2009/02/add-dynamic-buttons-and-handle-click.html
您需要重写 SaveViewState 和 LoadViewState 方法才能在回发后保存,请参见以下示例
http://urenjoy.blogspot.com/2009/03/create-dynamic-dropdownlists-in-aspnet.html
要检索值,请参见以下示例:
http://urenjoy.blogspot.com/2009/02/retrieve-value-of-dynamic-controls-in.html

【讨论】:

  • 感谢您的建议,我现在就去看看。我希望我能在那里找到答案。
【解决方案2】:

保留页面!使用 ajax 发布数据,如果您正在处理文件上传,则使用 flash 上传器。然后页面永远不会刷新,并且重新做动态创建的控件的代码要少得多。

【讨论】:

  • 我也有同样的想法,但页面很大,所以我认为使用 Ajax 不是一个好习惯。它们将太多的数据发回服务器。而且我实际上并没有处理上传,我正在做的是创建自定义字段并将值与其他值一起发送到数据。
【解决方案3】:

因为您将在回发时收到它们,所以您不能在服务器端动态重新创建它们吗?

【讨论】:

  • 这也是我的想法,但由于这是一种非常常见的技术,我认为可能还有另一种更好的方法。
  • 我公司页面的控件集合几乎完全内置在代码隐藏中,因为我们必须支持用户可定义的布局。我认为 Gaby 的想法会很好,但您可能会遇到动态添加的控件和视图状态的一些冲突。您是否遇到此问题将取决于您的页面的使用方式。
【解决方案4】:

如果控件根据用户输入的内容从 postback 到 postbck 不同,那么您可以尝试将 html it 存储到一个单独的类中,您将在其中拥有静态属性,例如 public static string WriteHTMLSubmit = ""

如果不是,那么将它们硬编码在代码后面,这是最好的做法...... if(page.isPostBack){<write contrls>}

【讨论】:

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