Я работаю с веб-формами и динамическими данными и должен передать объект из кода, лежащего за моими динамическими элементами управления, в мой шаблон поля.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() может использоваться только в контексте управления базой данных ".
Update
Я с тех пор обнаружил, что даже следующий код ...
<asp:DynamicControl Test="<%# Eval("MyProperty") %>" id="MyID" runat="server" DataField="MyField" Mode="Edit" />
... где MyProperty
является строковым свойством связанного объекта, даже это не в конечном итоге заполнение свойства теста String_Edit.ascx
. Несмотря на то, что когда я отлаживаю, я могу видеть, что к нему обращаются MyProperty
.
Любые предложения приветствуются.