2010-07-15 3 views
2

У меня есть динамический объект, построенный внутри IronPython, и я хотел бы построить управление на моей странице asp.net динамически в зависимости от того, что типов объектов вложены в моем динамическом объекте:Как использовать динамические объекты с asp.net?

dynamic variousComplexObjects = IronPythonApp.GetControls(); 
repeater.DataSource = variousComplexObjects; 
repeater.DataBind(); 

Может кто-нибудь написать мне быструю пример того, что делать дальше? Я уверен, что есть учебник, который делает что-то подобное, но у меня проблемы с поиском. Не стесняйтесь рекомендовать мне правильные ключевые слова или указать мне в направлении правильного потребления DLR-данных в приложении asp.net.

Спасибо!

ответ

2

Предполагая, что вы используете .net 4, вы можете просто использовать динамический в своем событии с привязкой к базе данных.

repeater.ItemDataBound += OnItemDataBound; 

protected void OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    dynamic dynObj = (dynamic)e.DataItem; 
    string text = dynObj.Text; // Etc. 
} 

я бы, вероятно, имеют свойство типа или подобное, чтобы проверить - в противном случае вы застряли пытается использовать GetType(), который я не уверен, работает ли с IronPython.

+0

О, да, хаха, забыл о OnItemDataBound. Круто, это именно то, что я искал. Спасибо Steffen – djmc

+0

Рад, что я мог бы помочь :-) – Steffen

0

Вот тема, озаглавленная «Databind object with 'dynamic' properties». Это включает в себя создание методов получения и установки клиентов по типу.

Это не соответствует вашему сценарию C# dynamic и источникам данных из DLR, но это может помочь.

Вот еще одна тема под названием «Can I databind to a collection of Dynamic Class». Автор создал динамический класс, используя Reflection.Emit.

Прокомментируйте, если какое-либо из этих решений подходит вашему делу. Я также заинтересован в решении, но на данный момент у меня нет платы за проезд.

+0

Спасибо. Это было то, что я искал. – djmc

0

Спасибо .. Я думаю, что никто не кодируется в традиционных веб-формах asp.net и динамических объектах. Вероятно, есть способ сделать это. Но я просто переключился на MVC.

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