asp.net中的动态调查表

时间:2010-07-12 16:09:02

标签: c# asp.net .net-4.0

我目前有一个db结构,看起来像我在下面的内容,我想知道什么是最好的方法来建立基于问题和数据库的DB的动态表单。回答输入部分。 还有什么最安全的方法呢?

QuestionID | Question                                                              | DisplayOrder
--------------------------------------------------------------------------------------
1          | Enter the addresses you have lived at in the last 10 years            | 1
2          | How much wood could a woodchuck chuck if a woodchuck could chuck wood | 2


AnswerID | QuestionID | Answer           | AnswerValueType        | DisplayOrder
-----------------------------------------------------------------------------
1        | 1          | Address                 | Text            | 1
2        | 1          | City                    | Lookup          | 2
3        | 1          | State                   | Lookup          | 3
4        | 2          | Enter your guesstimate  | Text            | 1


ResponseID| PersonID | QuestionID | AnswerID | AnswerValue
--------------------------------------------------------------
1         | 1        | 1          | 1        | 123 W Fake St
1         | 1        | 1          | 2        | Las Vegas
1         | 1        | 1          | 3        | Nevada
2         | 2        | 1          | 1        | 456 W Fake St
2         | 2        | 1          | 2        | Seattle
2         | 2        | 1          | 3        | Washington
1         | 1        | 2          | 1        | What a dumb question

提前致谢

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

有人提到斯科特·米切尔很有趣,因为在一次会议上我问他一个非常相似的问题,他给我发了一封电子邮件给大卫福勒,后者写了一篇关于这个主题的博客文章。基本上,他给我的答案是ASP.net团队有很多有趣的控件想法,这些想法将使这些问题更容易解决,但很难进入最终版本构建。其中一个控制是“SpecialRepeater”,我认为它更像是一个递归中继器。

博客文章位于:External ITemplates and Hierarchical Databinding

基本上,您在页面上抛出一个ObjectDataSource,将每个Question对象绑定到OuterTemplate,然后将InnerTemplate上的DataSource属性设置为原始问题的QuestionOption属性。

这当然假设您有某种数据模型,它允许您返回一个带有名为“QuestionsOptions”的属性的Question对象,或者是具有您需要的所有特殊属性的另一种类型的集合。

作为旁注,整个事情似乎可以通过执行旧的“OnDataBound()”技巧轻松处理......有时它可以...但是这总是混淆了代码隐藏和这个控制是非常奇特的,使整个过程在.aspx方面完全声明...

答案 2 :(得分:-1)

构建表单的最佳方式是以编程方式。