【问题标题】:asp.net dynamic controls wierd values issueasp.net 动态控件奇怪的值问题
【发布时间】:2012-04-24 06:03:29
【问题描述】:

在我的示例 asp.net 应用程序中,可以找到 here,我在 Page Init 上创建动态控件。 然后,如果用户在控件中输入文本并单击按钮,则应使用新值重新创建所有控件。

页面会用用户手动输入的数据覆盖第一行中填充的值。

关于如何在不更改为 html 控件或 MVC 的情况下防止这种情况的任何想法?

【问题讨论】:

    标签: asp.net dynamic controls


    【解决方案1】:

    视图状态在 Page_Init 事件中不可用。将创建移动到 Page_Load 事件。

    【讨论】:

    • 我不想使用视图状态(尝试在任何地方禁用它)并且 page_Load 在页面生命周期中为时已晚,无法添加动态控件,以便它们在回发后持续存在。有时控件按原样使用,但有时它们会被刷新,所以这个问题是根据示例应用程序应该刷新控件的时间。
    • 我了解您不想使用 veiwstate 的原因,但是如果您希望控件中的值保持不变,则必须使用 viewstate,或者在回发控件时手动设置值。
    • 我将状态保存在后端,因此不需要视图状态。这里的问题是我找不到让页面忽略视图状态/控制状态以不覆盖来自后端状态系统的值的方法。到目前为止,我只设法让它与 Response.Redirect 一起工作到我必须添加一个查询字符串 var 来告诉我的代码我做了回发......大黑客的同一页面。
    • 可以在 page_init 和 postback 之间使用不同的文本框 id 吗?
    【解决方案2】:

    我最终做了一个解决方法来保持我自己的状态,我在其中添加了一个查询字符串变量来告诉我的代码是第一次加载还是回发。我使用强制清除控件的新变量重定向到同一页面。

    另一种方法是在表单加载时检查 IsPostBack,并从我存储的对象值中再次替换 ViewState 分配的值。

    仍然无法通过禁用页面上的 Viewstate 和控件来了解为什么它仍然会使用 viewstate 值填充我的动态控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多