我正在尝试在NOPCOMMERCE中获取用户分配的所有角色。我知道如何确定用户是否处于特定角色,但我无法在列表或列表框中获取所有角色。
如果我使用以下代码:
Imports Nop.Core.Infrastructure
Imports Nop.Services.Helpers
Imports Nop.Core.Domain.Customers
Imports Nop.Services.Customers
Imports Nop.Core
ListBox1.DataSource = EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles()
ListBox1.DataBind()
'this is the listbox on aspx page
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
我在列表框中看到了这个:
System.Data.Entity.DynamicProxies.CustomerRole_6E0DFC682B2D3247B3BEEED3063345A95D5742CE33B2761C4CB20A8C0A0AD639
System.Data.Entity.DynamicProxies.CustomerRole_6E0DFC682B2D3247B3BEEED3063345A95D5742CE33B2761C4CB20A8C0A0AD639
System.Data.Entity.DynamicProxies.CustomerRole_6E0DFC682B2D3247B3BEEED3063345A95D5742CE33B2761C4CB20A8C0A0AD639
System.Data.Entity.DynamicProxies.CustomerRole_6E0DFC682B2D3247B3BEEED3063345A95D5742CE33B2761C4CB20A8C0A0AD639
其中显示了4个角色,但它们看起来不像我的角色。我需要实际的角色名称。有谁知道如何获得用户拥有的所有角色?感谢。
答案 0 :(得分:0)
您需要在列表框中指定DataTextField和DataValueField以告诉列表框CustomerRole将显示哪些字段。
ListBox1.DataSource = EngineContext.Current.Resolve(Of IWorkContext)().CurrentCustomer.CustomerRoles()
//add this
ListBox1.DataTextField = "SystemName"; //you can use "Name" instead of "SystemName" or whatever property name of CustomerRole class
ListBox1.DataValueField = "Id";
ListBox1.DataBind()