簡體   English   中英

如何將下拉列表中的選定參數發送到文件后面的 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 安全數據庫(用戶、用戶角色、成員資格等)中刪除其所有相關信息。

到目前為止,我所做的是開發了一個工具,它可以查詢我的 sql 數據庫並返回所有現有用戶並將其綁定到下拉列表。 我有一個刪除按鈕,在代碼隱藏文件中調用 function 將刪除所有相關的用戶信息,但只有當前登錄的用戶。

我想要的是僅刪除僅在下拉列表中選擇的選定用戶的用戶信息。

請原諒我的無知,我確實花了幾個小時試圖自己找到最簡單的解決方案。

這是前面的 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM