我在业务层创建了两个类。
第一个称为具有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
答案 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();
}
}