如何将所选参数从下拉列表发送到 C# 代码隐藏文件以代替 User.Identity.Name?
How to send selected parameter from dropdown to C# code behind file to use in place of User.Identity.Name?
我能够为遗留应用程序创建一个快速而肮脏的 asp 用户网站管理工具,并且我能够实现用于注册、激活、分配角色、创建角色的工具,但我正在努力成功创建一个允许您 select 现有用户并从基础 aspnet 安全数据库(用户、UserinRoles、成员资格等)中删除其所有相关信息的文件。
到目前为止,我所做的是开发了一个工具来查询我的 sql 数据库和 returns 所有现有用户并将其绑定到下拉列表。我有一个删除按钮,它调用代码隐藏文件中的一个函数,该函数将删除所有相关的用户信息,但仅限于当前登录的用户。
我想要的是仅删除下拉列表中选定的选定用户的用户信息。
请原谅我的无知,我确实花了几个小时试图自己找到最简单的解决方案。
这是前面的 ASPX 页面:
<h3>Delete Users</h3>
<p>
<b>Select a User:</b>
<asp:DropDownList ID="UserList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Page_Load"></asp:DropDownList>
</p>
<p>
<asp:SqlDataSource ID="UserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:AspnetdbConnectionString %>" SelectCommand="SELECT [UserName], [UserID] FROM [vw_aspnet_MembershipUsers] WHERE ([UserName] = @UserName)">
<SelectParameters>
<asp:ControlParameter Name="Username" ControlID="UserList" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="UserInfo" Height="50px">
<Fields>
<asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
<asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" />
</Fields>
</asp:DetailsView>
<asp:Button id="DeleteButton" Text="Yes" OnClick="DeleteButton_OnClick" runat="server" />
</p>
</div>
代码隐藏文件在这里:
< using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
public partial class DeleteUsers : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DisplayUsersInGrid();
}
}
private void DisplayUsersInGrid()
{
UserList.DataSource = Membership.GetAllUsers();
UserList.DataBind();
}
public void DeleteButton_OnClick(object sender, EventArgs args)
{
Membership.DeleteUser(User.Identity.Name);
ActionStatus.Visible = true;
}
您正在尝试删除当前登录的用户。
您必须从下拉列表中获取选定的用户 ID 并传递给 DeleteUserFunction。
替换Membership.DeleteUser(User.Identity.Name);以下
Membership.DeleteUser(UserList.SelectedValue);
我能够为遗留应用程序创建一个快速而肮脏的 asp 用户网站管理工具,并且我能够实现用于注册、激活、分配角色、创建角色的工具,但我正在努力成功创建一个允许您 select 现有用户并从基础 aspnet 安全数据库(用户、UserinRoles、成员资格等)中删除其所有相关信息的文件。
到目前为止,我所做的是开发了一个工具来查询我的 sql 数据库和 returns 所有现有用户并将其绑定到下拉列表。我有一个删除按钮,它调用代码隐藏文件中的一个函数,该函数将删除所有相关的用户信息,但仅限于当前登录的用户。
我想要的是仅删除下拉列表中选定的选定用户的用户信息。
请原谅我的无知,我确实花了几个小时试图自己找到最简单的解决方案。
这是前面的 ASPX 页面:
<h3>Delete Users</h3>
<p>
<b>Select a User:</b>
<asp:DropDownList ID="UserList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Page_Load"></asp:DropDownList>
</p>
<p>
<asp:SqlDataSource ID="UserInfo" runat="server" ConnectionString="<%$ ConnectionStrings:AspnetdbConnectionString %>" SelectCommand="SELECT [UserName], [UserID] FROM [vw_aspnet_MembershipUsers] WHERE ([UserName] = @UserName)">
<SelectParameters>
<asp:ControlParameter Name="Username" ControlID="UserList" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="UserInfo" Height="50px">
<Fields>
<asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
<asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" />
</Fields>
</asp:DetailsView>
<asp:Button id="DeleteButton" Text="Yes" OnClick="DeleteButton_OnClick" runat="server" />
</p>
</div>
代码隐藏文件在这里:
< using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
public partial class DeleteUsers : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DisplayUsersInGrid();
}
}
private void DisplayUsersInGrid()
{
UserList.DataSource = Membership.GetAllUsers();
UserList.DataBind();
}
public void DeleteButton_OnClick(object sender, EventArgs args)
{
Membership.DeleteUser(User.Identity.Name);
ActionStatus.Visible = true;
}
您正在尝试删除当前登录的用户。 您必须从下拉列表中获取选定的用户 ID 并传递给 DeleteUserFunction。
替换Membership.DeleteUser(User.Identity.Name);以下
Membership.DeleteUser(UserList.SelectedValue);