DynamicControl с пользовательским связанным атрибутом
Я работаю с веб-формами и динамическими данными, и мне нужно передать объект из кода за моими динамическими элементами управления в шаблон поля.
Я успешно попробовал это, используя строковое свойство с именем Test. Чтобы продемонстрировать, этот контроль находится на моей форме...
<asp:DynamicControl Test="Hello field" id="MyID" runat="server" DataField="MyField" Mode="Edit" />
... где MyField
является строковым свойством связанного объекта, а мой String_Edit.ascx
шаблон поля имеет следующее свойство...
public string Test { get; set; }
... Я вижу, что это свойство Test
содержит значение, которое я поставил, т.е. "Hello field"
когда я сломаюсь в его Page_Load
метод.
Однако я действительно хочу передать более сложный объект, на который ссылается как свойство в моем коде. Но если я попробую это...
<asp:DynamicControl Test="<%# this.MyObject %>" id="MyID" runat="server" DataField="MyField" Mode="Edit" />
... где у кода есть это свойство...
protected MyClass MyObject
{
get
{
if (this.o == null)
{
this.o = new MyClass();
}
return this.o;
}
}
... и мой String_Edit.ascx
изменилось ли его свойство на...
public MyClass Test { get; set; }
... тогда это свойство Test
всегда null
,
У меня есть ощущение, что проблема связана с необходимостью привязки элемента управления, но когда я пытаюсь это сделать, я получаю исключения в соответствии с " Методами привязки данных, такими как Eval(), XPath() и Bind(), могут быть только используется в контексте управления данными ".
Обновить
С тех пор я обнаружил, что даже следующий код...
<asp:DynamicControl Test="<%# Eval("MyProperty") %>" id="MyID" runat="server" DataField="MyField" Mode="Edit" />
...где MyProperty
является строковым свойством связанного объекта, даже если оно не заполняет свойство Test String_Edit.ascx
, Даже когда я отлаживаю, я вижу MyProperty
доступ к
Любые предложения приветствуются.
1 ответ
Это невозможно, вы можете передать только "типы значений" через разметку. Обратите внимание, что это не ограничение динамических данных, а веб-формы Asp.Net.