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.

Другие вопросы по тегам