C# 如何将用户输入的数据从动态创建的控件保存到会话状态?

C# 如何将用户输入的数据从动态创建的控件保存到会话状态?,c#,asp.net,session-state,C#,Asp.net,Session State,使用c#(asp.net) 我正在以编程方式创建几个下拉列表(随机数)。 用户从每个列表中选择一个特定值,我需要保存用户选择的值 如果我试图使用按钮单击事件将数据保存到会话状态,则表示下拉列表对象尚未创建。(显然,因为我正在!IsPostBack下的页面加载事件中创建下拉列表。) 如果我试图在IsPostBack下的页面加载事件中将数据保存到会话状态,我只会从每个列表中获取第一个值。(显然是因为回发后重新创建页面时,下拉列表已重新创建,用户输入的数据丢失) 单击按钮时,如何从下拉列表中保存用户选

使用c#(asp.net)

我正在以编程方式创建几个下拉列表(随机数)。 用户从每个列表中选择一个特定值,我需要保存用户选择的值

如果我试图使用按钮单击事件将数据保存到会话状态,则表示下拉列表对象尚未创建。(显然,因为我正在!IsPostBack下的页面加载事件中创建下拉列表。)

如果我试图在IsPostBack下的页面加载事件中将数据保存到会话状态,我只会从每个列表中获取第一个值。(显然是因为回发后重新创建页面时,下拉列表已重新创建,用户输入的数据丢失)

单击按钮时,如何从下拉列表中保存用户选择的值?
我在代码隐藏文件中这样做。

您必须在每个回发中重新创建所有的DROPDONE。

< P>个人(没有切换到MVC的能力),我会考虑完全取消回发,并直接从标准HTTP POST请求中读取值。


带有回发的动态控件的实现通常会非常复杂,而且很难遵循

,正如John Saunders所说,您必须在每次回发上重新创建所有DropDownList控件。此外,必须在恢复状态之前创建它们。这意味着页面加载事件中的“under!IsPostBack”已经太晚了。将其上移到Page Init。

页面循环是什么样子的,您是渲染页面并通过javascript创建下拉列表,还是在每个选择上创建下拉列表,或者……啊,好的。我将在page init中创建控件。这样,当按钮单击事件激发时,每个下拉列表对象的实例都将存在。实际上,我猜这总共使用了两个页面周期。我现在有另一个页面生命周期的详细阅读。在线开发还是新手,所以我需要一段时间才能接触到MVC和http帖子。如果你是在线开发新手,那么我真的建议你学习MVC而不是Web表单。