使用UserProfile表中的用户列表填充下拉框以删除用户

时间:2015-06-18 13:40:28

标签: c# asp.net-mvc asp.net-mvc-4 simplemembership

我正在开发一个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);
        }

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.TextBoxFor(m => m.UserName)
                    <span style="color:red;">@TempData["ErrorMessage"]</span>
                </li>

            </ol>
            <input type="submit" value="Delete User" />
            </div>
</fieldset>
}

我是否知道如何使用包含所有用户名的dropdon列表替换用户名文本框?

2 个答案:

答案 0 :(得分:0)

添加IEnumerable类型的ExistingUsers属性&lt; SelectListItem&gt;在UserProfile类中。

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

替换&#39; @ Html.TextBoxFor(m =&gt; m.UserName)&#39;用&#39; @Html。 DropDownListFor(m =&gt; m.UserName,Model.ExistingUsers)&#39;。

答案 1 :(得分:0)

修改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

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