如何在ASP.NET中构建灵活的Web表单
我正在使用asp.net,我需要构建一个应用程序,我们可以轻松创建表单而无需重新创建数据库,最好不要更改创建/读取/更新/删除查询.目标是允许客户创建自己的表单,包括下拉列表,文本框,复选框,甚至是与另一个简单表单(即拉伸它)的多对一关系.用户不必自己创建表单,但每次请求/修改新表单时,我都不希望添加表,字段,查询,网页等.
2个问题: 2)我如何建立表格?我考虑创建一个包含验证,数据类型,显示控件等的xml工作表作为列表.然后我将通过xml解析来动态构建表单.可能使用css来进行布局(必须是手动的,这没关系). 有更好/最好的方式吗?那里有什么我可以看到的想法吗?任何帮助深表感谢. 解决方法
这听起来像是InfoPath解决方案的潜在候选者.乍一看,它会完成你所要求的大部分/全部.
本文简要概述了如何创建基于SQL数据源的InfoPath表单. http://office.microsoft.com/en-us/infopath-help/design-a-form-template-based-on-a-microsoft-sql-server-database-HP010086639.aspx 我已经构建了一个完全自定义的解决方案,就像你描述的那样,如果我再次这样做,我可能会选择1)第三方产品或2)更少的功能.您可以将90%的时间用于处理10%的功能集. 编辑:重新阅读您的问题,这是其他反馈. 1 – 灵活的数据结构:要记住的几件事情是性能和针对数据编写报告的能力.数据结构越通用,就越难实现(再次,从经验来讲). 与性能和报告准备情况相反,Microsoft SharePoint在通用表中使用XML片段/文档以获得最大的灵活性.我无法与SharePoint的功能争论,因此这确实可以完成工作并大大简化数据结构.如果正确完成,XML将表现良好,但大多数人会发现编写针对XML的查询更加困难.尽管XML是SQL Server的“一等公民”,但它可能会也可能不会像优化的表结构那样运行. 2 – 表单:我使用XSLT转换的XML实现了自定义表单. XML通常是存储表单结构的好选择; XSLT本身就是一个怪物,但它非常强大.对于它的价值,InfoPath将其表单结构存储为XML. 我还在.Net中使用自定义控件实现了动态表单.这是一种非常面向对象的方法,但(取决于UI的复杂性)可能需要大量代码. 最后(再次使用SharePoint作为示例),Microsoft在SharePoint 2007中实现了非常复杂的XML列表/表单定义.复杂性失败了许多好处.换句话说,如果你采用XML路线,让你的结构干净简单,否则你的手上会有一个维护噩梦. 编辑#2:参考下面的Scott问题,这里是一个高级数据结构,它将避免重复数据,并且不依赖于XML来完成大部分表单定义. 警告:我只是将这个设计放在SQL Management Studio中……我只用了10分钟;开发灵活的表单系统并不是一项简单的任务,因此这是一种过度简化.它不涉及用户输入数据的存储,只涉及表单的定义. 表格: 表单 – 顶级表单表,其中包含(如您所猜)组成表单的字段集合. 字段 – 可以跨表单重用的通用字段.例如,您不希望为50种不同的表单添加50个不同的“姓氏”字段.请注意“DataTypeId”列.您可以在此列中存储您想要的任何类型,例如“数字”,“自由文本”,甚至是指示用户应从列表中选择的值. FormField – 允许表单在其定义中包含0多个字段.您甚至可以扩展此表以指示用户可以根据需要添加此字段的多个. 约束 – 基本上是一个定义约束类型的查找表(可能是最大长度,最大出现次数,要求等) FormFieldConstraint – 将约束与表单字段的特定实例相关联.此表将特定表单与具有特定约束的特定字段组合在一起.注意元数据列;这可能是XML用于存储约束细节的一个很好的用途. 基本上,我建议构建一个规范化的数据库,其中很少或没有空值,也没有重复的数据.我所描述的结构将帮助您实现该目标. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 什么是Razor中的ViewBag.Title?
- asp.net-mvc – 使用Entity FrameWork保存更改/更新数据集中
- asp.net-mvc – 来自HttpRequestMessage内容的文件名
- .net – Linq:获取DataContext中所有表的列表
- 您可以为标准ASP.NET Web窗体验证器定制客户端JavaScript验
- asp.net-mvc – 返回json中的双引号
- asp.net – “SELECT * FROM …”VS“SELECT ID FROM …”性
- 有没有办法从ASP.NET访问IIS内核缓存?
- asp.net – 如何正确编码mailto链接?
- asp.net-mvc-3 – 在MVC 3的AuthorizeAttribute中获取模型数
- asp.net – 在Load事件中使用LoadControl的陷阱
- asp.net-core – 在ASP.net Core中使用BeginColl
- ASP.NET MVC中静态或非静态方法之间的区别
- asp.net-mvc – 使用mvc创建博客条目的快照/缩略
- ABP官方文档(三十一)【集成Swagger UI】
- asp.net-mvc – OData和WebAPI路由冲突
- asp.net-mvc – SQL CE 4.0还是SQL Express?果园
- asp.net – 我什么时候真的需要InamingContainer
- 显示Asp.net AJAX Calendar Extender的两种方式
- asp.net-mvc – 如何使用activedirectorymembers