我有一个RadioButtonList“chklRoles”,它有4个按钮。如果我选择一个角色,我想更新数据库aspnet_UserInRoles。但似乎Aspnet Membership Provider没有更新方法。我该怎么办?
protected void chklRoles_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (string role in Roles.GetRolesForUser(userName))
{
if (chklRoles.Items.FindByText(role).Selected == true)
{
// update role;
// Roles.DeleteRole("origin_role");
// Roles.AddUserToRole(userName, role);
}
}
}
编辑:我认为删除它并添加新角色可能是一个选项。但请给我一个建议。 更新:每个用户只能有一个角色。我想要的是如何通过单击单选按钮切换角色。更新一个新角色将取代旧角色。
答案 0 :(得分:0)
您可以使用RoleProvider添加或删除用户的角色。您必须确定要添加和/或删除的角色。这看起来像这样:
protected void chklRoles_SelectedIndexChanged(object sender, EventArgs e)
{
var current = Roles.GetRolesForUser(userName);
var added = new List<string>();
var removed = new List<string>();
// go over all the roles to build the lists
foreach (string role in Roles.GetAllRoles())
{
if (chklRoles.Items.FindByText(role).Selected && !current.Contains( role ))
{
added.Add( role );
}
else if( current.Contains( role ) )
{
removed.Add( role );
}
}
// apply changes if needed
if( added.Count > 0 )
{
Roles.AddUsersToRoles( new[]{userName}, added.ToArray());
}
if( removed.Count > 0 )
{
Roles.RemoveUsersFromRoles(new[]{userName}, removed.ToArray());
}
}
请注意,我没有机会彻底检查此代码。