【问题标题】:Creating dynamic fields in a form MVC/SQL Server在 MVC/SQL Server 表单中创建动态字段
【发布时间】:2012-09-01 02:44:36
【问题描述】:
假设我们预定义了包含 3 个字段的表单:FirstName、LastName、Email,并且此表单映射到具有 ID、FirstName、LastName、Email 的表用户
假设用户想要添加一个新字段,例如 BirthDate。用户将选择字段的类型,这里是 DateTime texbox 和字段旁边的文本,如出生日期,但是如何在用户表中添加此列?
任何帮助将不胜感激
约瑟夫
【问题讨论】:
标签:
asp.net-mvc
forms
dynamic
【解决方案1】:
用户没有现实的方法将字段动态添加到实际的数据库表中,而不是让您拥有像“DateOfBirth”或“ShoeSize”这样的新字段。
但是,您可以通过更改应用程序的核心设计来从用户那里获取动态数据。您需要做的是抽象您的数据库并将每个值存储为单独的记录,而不是将数据存储在固定的“水平”表中 - 有点像“垂直”表。
所以你会有一张这样的桌子
Field, Data, Type
---------------------------
"FirstName", "John", string
"LastName", "Smith", string
"DateOfBirth", "01/01/1950", datetime
"ShoeSize", "4", int
这是架构问题,而不是技术问题。
有一篇非常好的文章 here 更深入地讨论了它。
重要的是要理解,这确实使您的应用程序更加抽象,类型安全性降低,因此更加复杂。除非您完全了解所涉及的额外工作,否则我不建议您尝试这样做。