2

我有一个页面,我需要根据用户在页面上的表单上所做的选择来构建一个页面,然后它会显示一组不同的问题供他们回答。

假设用户在页面编辑的表单中选择了原因 A,那么它需要在页面编辑确认中显示问题 1 和 2。但如果他们选择原因 B,则需要显示问题 3 和 4。

我正在从查询字符串中获取原因代码并设置了一个 switch 语句,但我无法找到如何输出不同控件的任何地方。如果应该显示问题 1 和 2,则一个可能是文本框,另一个是复选框,但如果应该显示问题 3 和 4,则可能需要一个下拉列表和一个复选框。

编辑:我将尝试以下一些建议,并将回来标记答案并相应地投票。谢谢大家的快速回复。

编辑 编辑:rlb.usa 和 AndrewVos 的答案同样有效。我选择了 Andrew,因为这似乎是更“正确”的做法。

4

6 回答 6

4

输出不同的控件?哎呀,听起来很痛苦。我认为您正在寻找的术语是动态控件(在代码中创建的控件)。我在这方面遇到的麻烦总是多于它的价值。

最常见的做法是在表单上设置所有控件。将每个“问题”或相关问题集都包含在ASP:Panel. 接下来,在您的代码中,您需要做的就是应用您的逻辑并根据您的需要隐藏/显示ASP:Panels(通过设置属性)。Visible如果适用,您可以在 上执行此逻辑Page_Load,或者在更改特定答案时执行此逻辑。

于 2010-04-23T15:13:29.210 回答
4

看看 MultiView 控件。它允许您添加视图并根据您的要求指定哪个是可见的。

于 2010-04-23T15:14:53.477 回答
1

您可以使用 PlaceHolder 控件并在服务器端向其添加相关控件,或者您可以呈现所有控件,并将其 style.display 设置为 none 并使用客户端 javascript 将相关控件设置为“阻止”

于 2010-04-23T15:15:09.003 回答
0

为什么不根据他们在页面编辑时选择的原因将他们发送到不同的页面?

于 2010-04-23T15:14:55.463 回答
0

一种方法是静态添加控件。根据用户选择隐藏或取消隐藏控件。这种方法最容易实现,但有点难看。

其他方法是动态创建控件并添加它们。您将不得不考虑管理视图状态,因为这些事情可能非常讨厌。

于 2010-04-23T15:15:35.097 回答
0

您可以在 page_load 事件中简单地在控件上设置可见属性。因此,在 switch 语句中,您只会使您希望用户看到的控件可见。

于 2010-04-23T15:16:44.430 回答