Roles.RemoveUsersFromRole(String[], String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет указанных пользователей из указанной роли.
public:
static void RemoveUsersFromRole(cli::array <System::String ^> ^ usernames, System::String ^ roleName);
public static void RemoveUsersFromRole (string[] usernames, string roleName);
static member RemoveUsersFromRole : string[] * string -> unit
Public Shared Sub RemoveUsersFromRole (usernames As String(), roleName As String)
Параметры
- usernames
- String[]
Массив строк имен пользователей, которых необходимо удалить из указанных пользователей.
- roleName
- String
Имя роли, из которой необходимо удалить указанных пользователей.
Исключения
roleName
имеет значение null
.
-или-
Одно из имен пользователей в массиве usernames
имеет значение null
.
Параметр roleName
равен пустой строке или содержит запятую (,).
-или-
Одно из имен пользователей в массиве usernames
равно пустой строке или содержит запятую (,).
-или-
Параметр usernames
содержит повторяющийся элемент.
Управление ролями не включено.
Примеры
В следующем примере кода метод используется RemoveUsersFromRole для удаления одного или нескольких пользователей из роли. Пример файла Web.config, который позволяет управлять ролями, см. в разделе Roles.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] rolesArray;
string[] users;
public void Page_Load()
{
Msg.Text = "";
if (!IsPostBack)
{
// Bind roles to ListBox.
rolesArray = Roles.GetAllRoles();
RolesListBox.DataSource = rolesArray;
RolesListBox.DataBind();
}
}
public void RolesListBox_OnSelectedIndexChanged(object sender, EventArgs args)
{
// Bind users to ListBox.
users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
UsersListBox.DataSource = users;
UsersListBox.DataBind();
}
public void RemoveUsers_OnClick(object sender, EventArgs args)
{
// Verify that at least one user and a role are selected.
int[] user_indices = UsersListBox.GetSelectedIndices();
if (user_indices.Length == 0)
{
Msg.Text = "Please select one or more users.";
return;
}
if (RolesListBox.SelectedItem == null)
{
Msg.Text = "Please select a role.";
return;
}
// Create list of users to be removed from the selected role.
string[] usersList = new string[user_indices.Length];
for (int i = 0; i < usersList.Length; i++)
{
usersList[i] = UsersListBox.Items[user_indices[i]].Value;
}
// Remove the users from the selected role.
try
{
Roles.RemoveUsersFromRole(usersList, RolesListBox.SelectedItem.Value);
Msg.Text = "User(s) removed from Role.";
// Rebind users to ListBox.
users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
UsersListBox.DataSource = users;
UsersListBox.DataBind();
}
catch (HttpException e)
{
Msg.Text = e.Message;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Role Membership</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td valign="top">Roles:</td>
<td valign="top"><asp:ListBox id="RolesListBox" AutoPostBack="true"
OnSelectedIndexChanged="RolesListBox_OnSelectedIndexChanged"
runat="server" Rows="8" /></td>
<td valign="top">Users:</td>
<td valign="top"><asp:ListBox id="UsersListBox" Rows="8"
SelectionMode="Multiple" runat="server" /></td>
<td valign="top"><asp:Button Text="Remove User(s) from Role" id="RemoveUsersButton"
runat="server" OnClick="RemoveUsers_OnClick" /></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim rolesArray() As String
Dim users() As String
Public Sub Page_Load()
Msg.Text = ""
If Not IsPostBack Then
' Bind roles to ListBox.
rolesArray = Roles.GetAllRoles()
RolesListBox.DataSource = rolesArray
RolesListBox.DataBind()
End If
End Sub
Public Sub RolesListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs)
' Bind users to ListBox.
users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
UsersListBox.DataSource = users
UsersListBox.DataBind()
End Sub
Public Sub RemoveUsers_OnClick(sender As Object, args As EventArgs)
' Verify that at least one user and a role are selected.
Dim user_indices() As Integer = UsersListBox.GetSelectedIndices()
If user_indices.Length = 0 Then
Msg.Text = "Please select one or more users."
Return
End If
If RolesListBox.SelectedItem Is Nothing Then
Msg.Text = "Please select a role."
Return
End If
' Create list of users to be removed from the selected role.
Dim usersList(user_indices.Length - 1) As String
For i As Integer = 0 To usersList.Length - 1
usersList(i) = UsersListBox.Items(user_indices(i)).Value
Next
' Remove the users from the selected role.
Try
Roles.RemoveUsersFromRole(usersList, RolesListBox.SelectedItem.Value)
Msg.Text = "User(s) removed from Role."
' Rebind users to ListBox.
users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
UsersListBox.DataSource = users
UsersListBox.DataBind()
Catch e As HttpException
Msg.Text = e.Message
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Role Membership</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td valign="top">Roles:</td>
<td valign="top"><asp:ListBox id="RolesListBox" AutoPostBack="true"
OnSelectedIndexChanged="RolesListBox_OnSelectedIndexChanged"
runat="server" Rows="8" /></td>
<td valign="top">Users:</td>
<td valign="top"><asp:ListBox id="UsersListBox" Rows="8"
SelectionMode="Multiple" runat="server" /></td>
<td valign="top"><asp:Button Text="Remove User(s) from Role" id="RemoveUsersButton"
runat="server" OnClick="RemoveUsers_OnClick" /></td>
</tr>
</table>
</form>
</body>
</html>
Комментарии
Метод RemoveUsersFromRole вызывает поставщика ролей по умолчанию для удаления указанных пользователей из указанной роли в источнике данных.
Если приложение использует SqlRoleProvider класс , обновления базы данных, выполняемые во время вызова RemoveUsersFromRoles метода, выполняются в рамках транзакции. При обнаружении ошибки, например имени пользователя, не указанного в указанной роли, выполняется откат транзакции, и обновления не выполняются.