在ASP中创建动态UI.NET web表单

本文关键字:NET web 表单 UI 动态 ASP 创建 | 更新日期: 2023-09-27 18:16:50

我需要创建一个从数据库读取以下结构的调查页面。

Survey QuestionA
a) Answer1 [Radio button]
b) Answer2 [Radio button]
c) Answer3 [Radio button]
d) Answer4 [Radio button]
repeats..

这个页面有很多问题需要动态添加。我需要将表单的结果存储在提交时的问题对象数组中。我知道的一种方法是在表中创建动态UI并通过FindControl获取值。是否有更好的(优雅的)方法来做到这一点?

在ASP中创建动态UI.NET web表单

Net MVC用默认的模型绑定器为你处理这些繁琐的工作。当然,您也可以创建自己的。虽然这并没有给您提供您希望在ASP中实现的自动解决方案。. Net Web Forms,在这种情况下,我的偏好是遵循与ASP. Net Forms类似的通用模式。Net MVC正在使用它的命名约定,从而简化了它。然后,您可以开始编写可以随着时间的推移而重用的代码。这里是Haack博客上一篇解释命名约定的文章的链接http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx。

长期建议使用ASP。Net MVC,生活在这里更美好:)

我建议创建一个 usercontrol ,实现一个问题(标签)和答案(单选按钮),每个控件(标签,无线电)被绑定到你的usercontrol的属性,然后你可以从数据库中读取问题,并为每个数据创建这个usercontrol 对象,并设置相应的数据usercontrol的属性,从这个状态读取数据,反之亦然。

尽管您必须在每个post back中重新创建usercontrols并将默认数据设置为这些。

还可以使用不同的UI创建多个用户控件,这些用户控件继承接口,例如IQuestion,以及工厂类,该类根据环境变量创建每个用户控件。

您可以使用jQuery通过checked属性获取选中的单选按钮,并在它们后面添加问题编号。例如,对于问题1,你有

所以你可以得到的值迭代通过单选按钮,像这样:$("输入类型="广播"]")支票

您总是可以通过编程方式添加控件。

假设你有一个aspnet面板控件,你可以执行…

RadioButton rb = new RadioButton();
rb.ID = "rbRadioButton";
rb.Name = "rbRadioButton";
rb.cssClass = "radioClass";
Panel1.Controls.Add(rb);

请原谅这个例子的苛刻,目前没有visual studio来检查它,但我希望你能理解这个想法。你可以用这种方式来构建整个问题,完全基于数据库。缺点是获得值,因为你必须覆盖渲染方法(如果我没记错的话,它已经有一段时间了,我确实有一个例子,如果你想让我找到它)。

我承认这有点小题大做,但这是一个可能的解决方案。

使用radiobuttonlist(您可以在工具箱中看到,它是asp.net标准控件)控件来实现此目的。