У меня есть модуль отчетности в приложении ASP.NET для веб-форм (C#), который использует динамические элементы управления для параметров для каждого отчета.Преобразование строки XML в код в C#
Эти динамические элементы управления построены из столбца XML в базе данных SQL Server 2008.
XML структура:
<Report Parameters>
<Parameter>
<Name>CustomerId</Name>
<Control />
</Parameter>
<Parameter>
<Name>Start Date</Name>
<Control>DDL</Control>
</Parameter>
</Report Parameters>
Я оставил для себя много элементов для удобства чтения.
Если элемент <Control>
не пуст (как в случае параметра Дата начала в примере XML), то преобразование XSLT на основе C# создает соответствующий элемент управления в моей форме.
Если элемент <Control>
пуст (как в случае с CustomerId), то я хочу использовать существующее свойство C# с тем же именем (т. Е. У меня есть CustomerId, определенный в моем коде C#).
Эти значения параметров (CustomerId и Дата начала) затем передаются в хранимую процедуру, используемую для генерации данных отчета.
Я использую XPathNavigator и связанные классы в моем коде C#, чтобы вытащить элемент <Name>
любого элемента <Control>
, который пуст.
Проблема заключается в том, что элемент <Name>
находится в виде строки, и я действительно хочу, чтобы она была в форме кода на C# (извините, не могу придумать лучший способ описать это!), Т.е. я хочу this.CustomerId (добавлено это, чтобы показать, что это код не строка), а не «CustomerId».
Как я не знаю, сколько отчетов эта система будет иметь со временем Я не хочу, чтобы создать enum или оператор switch, если «CustomerId» then this.CustomerId и т. Д., Поскольку он, кажется, отрицает точку динамического кода.
Я понимаю, что размышления, вероятно, понадобятся, и я мало знаю об этом, поэтому любые советы или советы по другому подходу к этой проблеме приветствуются.
Thanks,
Rich.
Я думаю, что это не то, что он хочет. Он хочет, чтобы это было жестко, с intellisense. – Jeroen