2014-11-25 4 views
0

Я работаю с веб-формами и динамическими данными и должен передать объект из кода, лежащего за моими динамическими элементами управления, в мой шаблон поля.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.

Любые предложения приветствуются.

ответ

0

это невозможно, вы можете передавать только «типы значений» через разметку. Обратите внимание, что это не ограничение динамических данных, а Asp.Net WebForms извините.

Смежные вопросы