我在 ASP.NET 网络表单应用程序 (C#) 中有一个报告模块,该模块对每个报告的参数使用动态控件。
这些动态控件是从 SQL Server 2008 DB 中的 XML 列构建的。
XML结构:
<Report Parameters>
<Parameter>
<Name>CustomerId</Name>
<Control />
</Parameter>
<Parameter>
<Name>Start Date</Name>
<Control>DDL</Control>
</Parameter>
</Report Parameters>
为了便于阅读,我省略了很多元素。
如果<Control>
元素不为空(如 XML 示例中的 Start Date 参数的情况),则基于 C# 的 XSLT 转换会在我的表单上创建适当的控件。
如果<Control>
元素为空(如 CustomerId 的情况),那么我想使用具有相同名称的现有 c# 属性(即,我在 c# 代码中定义了 CustomerId)。
然后将这些参数值(CustomerId 和开始日期)传递给用于生成报告数据的存储过程。
我在我的 C# 代码中使用 XPathNavigator 和关联的类来抽出<Name>
任何<Control>
空元素的元素。
问题是该<Name>
元素是字符串的形式,我真的希望它是 C# 代码形式(抱歉想不出更好的方式来描述这个!)即我想要 this.CustomerId(将 this 添加到显示它的代码不是字符串)而不是“CustomerId”。
由于我不知道随着时间的推移这个系统会有多少报告,我真的不想建立一个枚举或 switch 语句 if "CustomerId" 然后 this.CustomerId 等,因为它似乎否定了动态代码的意义。
我意识到可能需要进行反思,但我对此知之甚少,因此欢迎任何有关解决此问题的不同方法的建议或建议。
谢谢,
富有的。