我正在尝试将基于角色的功能添加到我的asp.net网络表单网站。
我使用ASP.Net配置创建了三个角色
我正在使用CreateUserWizard创建用户我稍微修改了它,以便我们在创建新用户时也可以添加角色。
以下是.aspx文件中的代码和.cs
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
oncreateduser="CreateUserWizard1_CreatedUser">
<CreateUserButtonStyle BackColor="#2F5E8C" BorderStyle="None" ForeColor="White"
Height="24px" />
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
<ContentTemplate>
<table border=0>
<tr>
<td align="right" class="tblRWHeight">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
</td>
<td class="tblRWHeight">
<asp:TextBox ID="UserName" CssClass="txtbox300UserM" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server"
ControlToValidate="UserName" ErrorMessage="User Name is required."
ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" class="tblRWHeight">
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
</td>
<td class="tblRWHeight">
<asp:TextBox ID="Password" CssClass="txtbox300UserM" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server"
ControlToValidate="Password" ErrorMessage="Password is required."
ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" class="tblRWHeight">
<asp:Label ID="ConfirmPasswordLabel" runat="server"
AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label>
</td>
<td class="tblRWHeight">
<asp:TextBox ID="ConfirmPassword" CssClass="txtbox300UserM" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server"
ControlToValidate="ConfirmPassword"
ErrorMessage="Confirm Password is required."
ToolTip="Confirm Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" class="tblRWHeight">
<asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
</td>
<td class="tblRWHeight">
<asp:TextBox ID="Email" CssClass="txtbox300UserM" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="EmailRequired" runat="server"
ControlToValidate="Email" ErrorMessage="E-mail is required."
ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2" >
<asp:CompareValidator ID="PasswordCompare" runat="server"
ControlToCompare="Password" ControlToValidate="ConfirmPassword"
Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
</td>
</tr>
<tr>
<td align="right" class="tblRWHeight">
<asp:Label ID="Label1" runat="server" AssociatedControlID="Email">Add Role</asp:Label>
</td>
<td class="tblRWHeight">
<asp:DropDownList ID="ddRoleList" runat="server"> </asp:DropDownList>
</td>
</tr>
<tr>
<td align="center" colspan="2" >
</td>
</tr>
<tr>
<td align="center" colspan="2" style="color:Red;" >
<asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal>
</td>
</tr>
</table>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
</asp:CompleteWizardStep>
</WizardSteps>
<StartNavigationTemplate>
<asp:Button ID="StartNextButton" runat="server" CommandName="MoveNext" Text="Next" style="background-color:#2F5E8C; border:0px solid #AB1B56; height:24px; color:#fff;" />
</StartNavigationTemplate>
</asp:CreateUserWizard>
.CS用于填充下拉列表并保存角色的文件代码
DropDownList roleDropDownList;
protected void Page_Load(object sender, EventArgs e)
{
//if( (!IsPostBack))
//{
DataSet ds = new DataSet();
ds = DataProvider.Connect_Select(" select RoleName from aspnet_Roles");
roleDropDownList = (DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddRoleList");
roleDropDownList.DataSource = ds.Tables[0];
roleDropDownList.DataTextField = "RoleName";
roleDropDownList.DataValueField = "RoleName";
roleDropDownList.DataBind();
//}
}
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
Roles.AddUserToRole(CreateUserWizard1.UserName, roleDropDownList.SelectedValue);
}
使用此代码,我可以保存用户,但它始终将Admin
保存为数据库中的角色,因为它是下拉列表中的第一个。
我不确定我在哪里犯错误或我的方法有误我用以下链接作为参考点
Adding roles to the 'CreateUserWizard'
我很感激这方面的帮助。
更新:下拉正确填写
<select class="txtbox300UserM" id="MainContent_CreateUserWizard1_CreateUserStepContainer_ddRoleList" name="ctl00$MainContent$CreateUserWizard1$CreateUserStepContainer$ddRoleList">
<option value="Admin">Admin</option>
<option value="Guest">Guest</option>
<option value="Editor">Editor</option>
</select>
工作代码:我之前尝试过类似的代码,因为它不能用于soem原因。下面的代码正在运行......
protected void Page_Load(object sender, EventArgs e)
{
DropDownList roleDropDownList;
if (!Page.IsPostBack)
{
DataSet ds = new DataSet();
ds = DataProvider.Connect_Select("select RoleName from aspnet_Roles");
roleDropDownList = (DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddRoleList");
roleDropDownList.DataSource = ds.Tables[0];
roleDropDownList.DataBind();
}
}
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
string role = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddRoleList")).SelectedItem.Value.ToString();
Roles.AddUserToRole(CreateUserWizard1.UserName, role);
}
答案 0 :(得分:0)
绑定下拉列表后
roleDropDownList.DataBind();
roleDropDownList.SelectedValue="admin value";
答案 1 :(得分:0)
我认为这是错误的
roleDropDownList.DataTextField = "RoleName";
roleDropDownList.DataValueField = "RoleName";
如你所见,你两次选择了Rolename。
试试这个:
roleDropDownList.DataTextField = "RoleName";
roleDropDownList.DataValueField = "ID_RoleName";
'or what ever is the unique ID of the tbl is;
答案 2 :(得分:0)
工作代码,我之前尝试过类似的代码,因为某些原因它无效。经过多次改变后环顾四周,我修改了一些小改动的代码。它现在开始工作正常。
protected void Page_Load(object sender, EventArgs e)
{
DropDownList roleDropDownList;
if (!Page.IsPostBack)
{
DataSet ds = new DataSet();
ds = DataProvider.Connect_Select("select RoleName from aspnet_Roles");
roleDropDownList = (DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddRoleList");
roleDropDownList.DataSource = ds.Tables[0];
roleDropDownList.DataBind();
}
}
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
string role = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddRoleList")).SelectedItem.Value.ToString();
Roles.AddUserToRole(CreateUserWizard1.UserName, role);
}