我有一个在IronPython中构建的动态对象,我想根据嵌套在动态对象中的对象类型动态地在我的asp.net页面上构建控件:
dynamic variousComplexObjects = IronPythonApp.GetControls();
repeater.DataSource = variousComplexObjects;
repeater.DataBind();
有人可以给我一个快速举例说明下一步该做什么吗?我确信有一个教程在那里做类似的事情,但我在谷歌搜索时遇到了一些麻烦。请随意向我推荐正确的关键字,或指出我在asp.net应用程序中正确使用DLR数据的方向。
谢谢!
答案 0 :(得分:2)
假设您使用.net 4,您可以在数据绑定事件中使用dynamic。
repeater.ItemDataBound += OnItemDataBound;
protected void OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
dynamic dynObj = (dynamic)e.DataItem;
string text = dynObj.Text; // Etc.
}
我可能有一个类型属性或类似的东西来检查 - 否则你会遇到尝试使用GetType(),我不确定是否适用于IronPython。
答案 1 :(得分:0)
这是一个名为“Databind object with 'dynamic' properties”的主题。它涉及在类型上创建客户获取和设置方法。
它不完全符合你的C#dynamic
的情景以及从DLR获取数据,但它可能有所帮助。
这是另一个名为“Can I databind to a collection of Dynamic Class”的主题。创作者使用Reflection.Emit
创建了一个动态类。
如果这些解决方案适合您的情况,请发表评论。我也对这个解决方案感兴趣,但目前还没有通过测试的费用。
答案 2 :(得分:0)
谢谢..我猜没有人在传统的asp.net网络表单和动态对象中编码。可能有办法做到这一点..但我只是转而使用MVC。