是否有一种标准的方法可以将XSD转换为输入表单(ASP.NET C#),以便以后无论何时从XSD中添加/删除新字段,页面上的字段都会自动显示或消失,这是需要内部开发的吗?我认为必须有一种方法可以序列化/反序列化并生成表单?任何帮助都将不胜感激。。
我不认为有任何内置的东西可以使这完全自动化。然而,你可以非常接近。VisualStudio包含一个名为xsd.exe的命令行程序,您可以使用该程序从xsd文档中自动创建类定义。一旦有了该类定义,就可以通过ObjectDataSource组件和DetailsView控件将其连接到窗体。
假设:您使用XML是因为它目前对您来说更简单。
想法:既然你想创建一个表单来处理数据,我猜你可能对SQL而不是XML持开放态度。事实可能并非如此,但如果您有数据库后端而不是XML/XSD后端,您可能会找到更多的工具来帮助您。(此外,还有一些方法可以将数据从一个数据转换为另一个数据)。
ASP.NET中有一些工具可以从数据库中创建表单。例如,SubSonic有一个自动脚手架模块,可以让您创建只知道其架构的数据库管理器。如果架构发生更改,只需让SubSonic重新生成其文件,您的表单就会被修改。它并不完美,但它可能会有很长的路要走,这取决于你的需求。
选项1)您可以从XSD创建数据库架构(如何从XSD文件创建数据库表?)并从那时起使用SubSonic。这可能比您最初的问题更痛苦。。。只有你知道。
选项2)破解SubSonic脚手架,使其支持底层XSD/XML,而不是数据库。您可能可以重用他们的许多基础设施(SubSonic是开源的)来从XSD生成表单。
祝你好运!
好吧,我不得不说ObjectDataSource不是一个坏主意,但如果你有嵌套的元素,这是行不通的。除此之外,对于嵌套元素,DetailsView中也将包含所有"..FieldSpecified"布尔字段。
我仍在尝试如何使用XSD文件生成ASP.NET表单,而不必键入所有内容,这是一项艰巨的工作。
有人已经遇到这个问题了吗?
PS:另一种方法是使用InfoPath,但这需要获得许可的软件才能作为Web表单运行。。。