我正在ASP.NET,C#,MVC3和SQL Server 2008中构建应用程序。
将表格呈现给用户以填写(姓名,电子邮件,地址等)。我想允许应用程序的管理员在此表单中添加额外的动态问题。
额外问题的数量和返回的数据类型会有所不同。例如,管理员可以添加0,1个或更多以下类型的问题:
请注意,提供的答案可能是二进制(Q.1),整数(Q.2)或自由文本(Q.3)。
如何允许从表单中将0,1个或更多随机值发布回我的代码?
任何帮助都会非常适合。
提前致谢。
PS。我问了一个关于在sql中存储这些数据的类似问题,请参阅here
答案 0 :(得分:1)
您需要使用EAV方案进行存储。有关该主题的讨论,以及常见的陷阱和解决方案,请参阅Best Practices for Semantic Data Modeling for Performance and Scalability。其他选择是Sparse Columns和XML data type列,但我认为EAV在大多数情况下都是优越的。
答案 1 :(得分:0)
您必须使用动态控件来完成此操作。
基本上,您将从数据库中读取问题列表,注入零个或多个自定义控件以发出问题并接受答案。可能包裹在转发器中。
在回发后,你必须重新水化动态控件,以便你可以获得值。
答案 2 :(得分:0)
在我使用调查工具之前,我已经完成了这项工作。
首先,您需要确定您将拥有哪些类型的问题。我有SingleOption,MultiOption和FreeText类型的问题。
用户登录管理界面屏幕并选择他想要添加的问题类型。然后,他单击“添加”按钮,该按钮向控制器/ Web服务提交请求。
Controller查看问题类型并将记录添加到数据库中。
下面的粗糙表结构:
QuestionID | SurveyId | QuestionTypeId 2 4 1
这是你的基本结构。
当您生成用于回答问题的界面时,您将使用SurveyId = 4检索所有问题。
然后,您将编写一个HTML帮助程序,查看问题类型并生成适当的控件。
在提交调查或问题答案时,您会在某个div中显示所有问题和答案字段,比如我们称之为“survey_questions”。在这个div中将包含一个表格,其中包含您的所有问题和答案控件(文本输入,复选框等)。
然后,您将通过jQuery将此表单提交给控制器/ Web服务。 Controller / Web Service将读取调查ID,它将遍历所有提交的值。
然后,您将使用这些值填充表格以存储调查结果。我知道这是非常简短和抽象的,但我已经工作了一个多月,所以如果这很有用,你需要进一步的帮助,那么请问。
答案 3 :(得分:0)
我发现了一篇很好的文章解决了我的问题。 你可以找到它here