将用户角色绑定到下拉列表?

时间:2010-03-18 10:28:54

标签: asp.net linq data-binding roles

我正在尝试将所选用户的角色绑定到下拉列表。 这样做的目的是能够改变所述用户的角色。

我在一个连接到linqdatasource的formview中尝试这个,它包含aspnet_User table中的一行。

下拉列表连接到aspnet_Roles table (with DataValueField="RoleID", DataTextField="RoleName")中所有角色的linqdatasource。

我认为可以使用以下内容:

SelectedValue='<%# Bind("aspnet_UsersInRole[0].aspnet_Role.RoleID") %>'

但是这会抛出一个解析器异常,关于绑定调用没有正确格式化。

角色在那里,当我删除SelectedValue

时,它们会显示出来

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

如果你将aspnet_roles表绑定到下拉列表,为什么代码示例使用aspnet_usersinrole?相反,如果要绑定到aspnet_role对象,请执行:

SelectedValue='<%# Bind("RoleID") %>'

相反;这将连接到正确的财产。如果你想绑定aspnet_usersinrole,如果可能的话,在LINQDataSource中,从结果的aspnet_usersinrole,做一个select操作,为此选择aspnet_role对象。

答案 1 :(得分:0)

已解决 - 我最终只是在代码隐藏中创建了一个返回roleID的方法,如下所示:

public Guid GetRoleID(Guid userID) {
    DBDataContext db = new DBDataContext();
    aspnet_User user = db.aspnet_Users.SingleOrDefault(o => o.UserId == userID);
    return user.aspnet_UsersInRoles[0].aspnet_Role.RoleId;
}

然后在标记中执行:

 SelectedValue='<%# GetRoleID((Guid)Eval("UserID")) %>'