绑定具有List<>类型属性的对象转发器

时间:2010-12-19 22:51:27

标签: c# asp.net sql ado.net webforms

我在业务层创建了两个类。

第一个称为具有id(int),pass(字符串)和特权(Privilege)属性的Users,第二个称为Privilege并具有id(int)和privilegeName(字符串)属性。

我有一个返回所有用户的方法,我使用转发器(实际上我将它绑定到DataList以自动为我创建ItemTemplate,然后使用转发器)并且它可以正常显示所有属性,除了对于我的List属性。它会生成类似这样的System.Collections.Generic.List`1 [WebApplication2.Public.BLL.Users]

我希望以友好的方式显示它,例如“用户权限:Privi1,Privi2”,但我仍然希望保持应用程序层的清洁和结构化,例如我不会将它们存储在同一个数据库中表,只需将它们存储为文本并附加即可。

我希望找到一个简单而好的解决方案......先谢谢你们=)

PS:我不想显示对象Privilege,我想显示privilege.privilegeName

2 个答案:

答案 0 :(得分:2)

使用中继器时,有两种方法,一种是Bugai13建议的方法:具有显示它的自定义属性。这适用于某些类型的嵌套数据。

您的另一个选择是在转发器内部安装转发器,并将其适当绑定(分配给主数据对象的列表,具体取决于您的O / R Mapper的工作方式)。

您可以让自定义显示属性的代码不在数据模型中,而是在您的表示层中(取决于您的框架/设计),因此这不是一个“坏”的事情。这取决于你,无论什么“感觉”最好。

答案 1 :(得分:0)

只需在您的Business对象上创建属性,然后绑定它:

public string PrivilegiesString
{
   get
   {
     var sb = new StringBuilder("User Privileges : ");
     foreach(var item in privileges)
     {
       sb.AppendFormat("{0}, ",item.privilegeName);
     }

     return sb.ToString();
   }
}