C# 如何在asp.net webforms中动态添加数据条目表单

C# 如何在asp.net webforms中动态添加数据条目表单,c#,asp.net,webforms,C#,Asp.net,Webforms,我必须在asp.net webforms中创建一个数据输入表单,用户可以在其中输入多个成员详细信息。每个成员详细信息将有大约20个数据项,例如FirstName、Lastname、DateOfBirth等。输入的成员数量可以是1到20 一旦所有成员进入或在进入过程中,他们应该能够转到上一个或下一个条目并进行更改。基本上,应该有一个“下一个”和“上一个”按钮来遍历页面。最后,单击“保存”按钮时,应保存所有输入的数据 我已经创建了一个UserControl,它有所有的文本框来输入数据。我已经创建了五

我必须在asp.net webforms中创建一个数据输入表单,用户可以在其中输入多个成员详细信息。每个成员详细信息将有大约20个数据项,例如FirstName、Lastname、DateOfBirth等。输入的成员数量可以是1到20

一旦所有成员进入或在进入过程中,他们应该能够转到上一个或下一个条目并进行更改。基本上,应该有一个“下一个”和“上一个”按钮来遍历页面。最后,单击“保存”按钮时,应保存所有输入的数据

我已经创建了一个UserControl,它有所有的文本框来输入数据。我已经创建了五个硬编码面板,它们五次显示usercontrol。这使得可以输入的成员总数为五个

我想在单击“下一步”按钮时,用动态添加的面板替换这个硬编码模型

请让我知道如何做到这一点。或者如果有更好的架构,请让我知道。我尝试了向导控件,但它在维护以前输入的值和使用“下一步”和“上一步”按钮遍历数据时太麻烦了


感谢您,您可以使用以下方法将控件动态添加到页面:

Page.Controls.Add(new MyControl());
您必须为在控件中输入的数据找到一个临时存储,例如会话

Session["addedControls"] = myControls;
您可以跟踪它们添加的控件的数量,然后循环,并将所有数据保存到您正在使用的任何永久存储中

这里有一个例子:

将整个控件存储在会话中确实有它的缺点,例如所涉及的开销,您可以只存储数据,这样更有效,但实现起来要稍微费劲一点。 这也只有在他们启用了cookie的情况下才会起作用


或者,您也可以通过调用Page.controls.Add所需的次数,为他们提供一个下拉列表,以选择他们希望创建的条目的数量,并显示该数量的控件。然后在最后批量保存它们。

您可以动态添加所需的控件,以便在javascript中轻松输入新成员。你的提议对我来说简直是噩梦。我会建立一个页面,上面有添加成员的控件和“添加成员”按钮。单击“添加成员”按钮时,我会将成员保存到数据库,检索在此会话中添加的成员列表,并在页面“添加成员”区域右侧的列表中显示成员的名称。如果他们想查看某个成员,可以单击其名称,您可以显示该成员已准备好进行编辑。或者他们可以添加另一个成员,直到完成。您试图做的事情将是一场噩梦,无法管理,用户也无法轻松使用。

使用动态控件将非常困难,而且对用户不友好,因为它可能需要刷新页面或使用更新面板

在您的情况下,我建议您使用Knockout从JavaScript完成这一切,这是一个完整的示例

确保在添加或编辑网格后,您将使用JSON.Stringify将JavaScript对象序列化为字符串,并将此文本添加到隐藏字段中

提交表单时,只需获取隐藏字段值,使用newtonsoft json库将字符串转换为对象,并免费使用对象,该对象将是您的模型列表(例如:Order)

与动态控制器相比,该控制器更易于管理和用户友好