【发布时间】:2010-09-18 01:25:22
【问题描述】:
是否有将 XSD 转换为输入表单 (ASP.NET C#) 的标准方法,以便以后在 XSD 中添加/删除新字段时,页面上的字段会分别自动显示或消失,这是需要内部开发的东西吗?我认为必须有一种方法来序列化/反序列化并生成表单?任何 hel 将不胜感激..
【问题讨论】:
标签: asp.net webforms xsd input elements
是否有将 XSD 转换为输入表单 (ASP.NET C#) 的标准方法,以便以后在 XSD 中添加/删除新字段时,页面上的字段会分别自动显示或消失,这是需要内部开发的东西吗?我认为必须有一种方法来序列化/反序列化并生成表单?任何 hel 将不胜感激..
【问题讨论】:
标签: asp.net webforms xsd input elements
我不认为有任何内置功能可以使这完全自动化。但是,您可以非常接近。 Visual Studio 包含一个名为 xsd.exe 的命令行程序,可用于从 xsd 文档自动创建类定义。一旦有了该类定义,您就可以通过 ObjectDataSource 组件和 DetailsView 控件将其连接到表单。
【讨论】:
假设:您正在使用 XML,因为目前它对您来说更简单。
想法:由于您想创建一个表单来操作数据,我猜您可能对 SQL 而非 XML 持开放态度。情况可能并非如此,但如果您有数据库后端而不是 XML/XSD 后端,您可能会找到更多工具来帮助您。 (此外,还有一些方法可以将数据从一种转换为另一种)。
有一些工具可以从 ASP.NET 中的数据库创建表单。例如,SubSonic 有一个自动脚手架模块,可以让您创建一个只知道其模式的数据库管理器。如果架构发生变化,只需让 SubSonic 重新生成其文件,您的表单就会被修改。它并不完美,但可能会有很长的路要走,具体取决于您的需求。
选项 1) 您可以从 XSD (How can I create database tables from XSD files?) 创建数据库架构并从那时起使用 SubSonic。这可能比你原来的问题更痛苦......只有你知道。
选项 2) 破解 SubSonic 脚手架,使其支持您的底层 XSD/XML 而不是数据库。您可能可以重用他们的许多基础设施(SubSonic 是开源的)来从 XSD 生成表单。
祝你好运!
【讨论】:
好吧,我不得不说 ObjectDataSource 不是一个坏主意,但是如果您有嵌套元素,这将不起作用。除此之外,对于嵌套元素,您还将在 DetailsView 中拥有所有“..FieldSpecified”布尔字段。
我仍在尝试弄清楚如何使用 XSD 文件生成 ASP.NET 表单,而无需输入所有内容,这是猴子的工作。
有人遇到过这个问题吗?
PS:另一种方法是使用 InfoPath,但这需要许可软件作为网络表单运行...
【讨论】: