我目前有一个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
提前致谢
答案 0 :(得分:5)
答案 1 :(得分:1)
有人提到斯科特·米切尔很有趣,因为在一次会议上我问他一个非常相似的问题,他给我发了一封电子邮件给大卫福勒,后者写了一篇关于这个主题的博客文章。基本上,他给我的答案是ASP.net团队有很多有趣的控件想法,这些想法将使这些问题更容易解决,但很难进入最终版本构建。其中一个控制是“SpecialRepeater”,我认为它更像是一个递归中继器。
博客文章位于:External ITemplates and Hierarchical Databinding
基本上,您在页面上抛出一个ObjectDataSource,将每个Question对象绑定到OuterTemplate,然后将InnerTemplate上的DataSource属性设置为原始问题的QuestionOption属性。
这当然假设您有某种数据模型,它允许您返回一个带有名为“QuestionsOptions”的属性的Question对象,或者是具有您需要的所有特殊属性的另一种类型的集合。
作为旁注,整个事情似乎可以通过执行旧的“OnDataBound()”技巧轻松处理......有时它可以...但是这总是混淆了代码隐藏和这个控制是非常奇特的,使整个过程在.aspx方面完全声明...
答案 2 :(得分:-1)
构建表单的最佳方式是以编程方式。