使用用户配置文件表中的用户列表填充下拉框以删除用户

本文关键字:用户 删除 填充 配置文件 列表 | 更新日期: 2023-09-27 17:57:01

我正在开发一个 asp.net mvc 4应用程序,我正在尝试为管理员添加删除用户功能,我应该能够从下拉列表中选择一个用户并删除他。

我可以通过在文本框中手动输入用户名来删除用户,但我想用所有用户的列表预填充下拉列表。

我使用文本框开始了该功能

控制器

[HttpPost]
        [ValidateAntiForgeryToken]
        [Authorize(Roles = "Admin")]
        public ActionResult DeleteUser(UserProfile model)
        {

            if (ModelState.IsValid)
            {
                /
                try
                {
                    if (model.UserName == null)
                    {
                        TempData["ErrorMessage"] = "Username required.";
                        return RedirectToAction("Register", "Account");
                    }
                    else
                    {
                        var user = Membership.GetUser(model.UserName);
                        if (user == null)
                        {
                            TempData["ErrorMessage"] = "User Does Not exist.";
                            return RedirectToAction("Register", "Account");
                        }
                        else
                        {
                            Membership.DeleteUser(model.UserName);
                        }
                        return RedirectToAction("Register", "Account");
                    }
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

            return View(model);
        }

删除用户.cshtml

@model WhiteBoardApp.Models.UserProfile

@using (Html.BeginForm("DeleteUser", "Account"))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()
    <fieldset>
        <div class="container-fluid">
            <ol>
                <li>
                    @Html.LabelFor(m => m.UserName)
                    @Html.TextBoxFor(m => m.UserName)
                    <span style="color:red;">@TempData["ErrorMessage"]</span>
                </li>
            </ol>
            <input type="submit" value="Delete User" />
            </div>
</fieldset>
}

我可以知道如何用包含所有用户名的下拉列表替换用户名文本框吗?

使用用户配置文件表中的用户列表填充下拉框以删除用户

在 UserProfile 类中添加类型为 IEnumerable 的现有用户属性<选择列表项>。

查询数据库以使用用户列表填充现有用户。

将"@Html.TextBoxFor(m => m.UserName)

"替换为"@Html. DropDownListFor(m => m.UserName, Model.ExistingUsers)"。

修改你的 DeleteUser.cshtml

    @model WhiteBoardApp.Models.UserProfile
    @using (Html.BeginForm("DeleteUser", "Account"))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary()
        <fieldset>
            <div class="container-fluid">
                <ol>
                    <li>
                        @Html.LabelFor(m => m.UserName)
                        @Html.DropDownListFor(m => m.UserName, new SelectList(GetUserName(), "UserName", "UserName"))
                        <span style="color:red;">@TempData["ErrorMessage"]</span>
                    </li>
                </ol>
                <input type="submit" value="Delete User" />
                </div>
    </fieldset>
    }

编写名为 GetUserName 的用户定义函数以从数据库中获取所有用户名。在dataValueField和dataTextField中提到用户名属性,如UserName

提交页面时,它会将选定的用户名传递给模型