如何从AspNetUsers获取UserId并在DropDownList中绑定Asp.Net Mvc 6

时间:2016-04-06 15:03:02

标签: c# asp.net sql-server asp.net-mvc

我试图从AspNetUsers表中获取所有UserId,以便在Asp.Net Mvc 6的下拉列表中绑定这些Id,但我不知道该怎么做。你能帮助我并展示如何做到这一点。 例如:

public IEnumerable<SelectListItem> AspNetUsers { get; set; }
private IEnumerable<SelectListItem> GetAllUserId()
    {

        return _context.UserClaims.ToList().Select(users => new SelectListItem
        {
            Text = users.UserId.ToString(),
            Value = users.UserId.ToString()
        });
    }

//创建

public IActionResult Create()
    {
        // todo: Get all User Id in DropDownList
        AspNetUsers = GetAllUserId();
        ViewBag.UserClaims = AspNetUsers;

        return View();
        //return Content("");
    }
public IActionResult Create(Message message)
    {
        // todo: validate
        //var message = new Message
        //{
        //    MessageTitle = messageTitle,
        //    MessageContent = messageContent
        //};
       if(!ModelState.IsValid)
        {
            // todo: Get all User Id in DropDownList
            AspNetUsers = GetAllUserId();
            ViewBag.UserClaims = AspNetUsers;

            // todo: store
            message.Created = DateTime.Now;

            if (_context.Messages.Any(ms => ms.MessageTitle.Equals(message.MessageTitle)))
            {
                return RedirectToAction("Index", new { MessageFlag = MessagesMessageId.MessageExits });
            }
            else
            {
                var Msg = new Message
                {
                    UserId = message.UserId,
                    Created = message.Created,
                    MessageTitle = message.MessageTitle,
                    MessageContent = message.MessageContent
                };
                _context.Messages.Add(Msg);
                int i = _context.SaveChanges();
                if (i == 1)
                {
                    return RedirectToAction("Index", new { MessageFlag = MessagesMessageId.MessageSentSuccess });
                }
                else
                {
                    return RedirectToAction("Index", new { MessageFlag = MessagesMessageId.Error });
                }
            }
        }
        return View(message);

} //创建视图

        <div class="form-group">
            <label asp-for="UserId" class="col-md-2 control-label"><b>User Id:</b></label>
            <div class="col-md-10">
                @*<input type="text" name="messageContent" id="messageContent" class="form-control" />*@
                <select asp-for="UserId" asp-items="@ViewBag.UserClaims" class="form-control"></select>
            </div>
        </div>
        <div class="form-group">
            <label asp-for="Created" class="col-md-2 control-label"><b>Create Date:</b></label>
            <div class="col-md-10">
                @*<input type="text" name="messageContent" id="messageContent" class="form-control" />*@
                <input asp-for="Created" class="form-control" />
                <span asp-validation-for="Created" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.MessageTitle, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextAreaFor(model => model.MessageTitle, new { @class = "form-control", placeholder = "Subject" })
                @Html.ValidationMessageFor(model => model.MessageTitle)
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.MessageContent, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextAreaFor(model => model.MessageContent, new { @class = "ckeditor", placeholder = "Content" })
                @Html.ValidationMessageFor(model => model.MessageContent)
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Submit" class="btn btn-primary" />
            </div>
        </div>
    </div>

}

1 个答案:

答案 0 :(得分:0)

为了从AspNetUsers表添加用户ID,我们必须编写如下代码:

public IEnumerable<SelectListItem> AspNetUsers { get; set; }

私有IEnumerable GetAllUserId()     {

    return _context.Users.ToList().Select(users => new SelectListItem
    {
        Text = users.Id.ToString(),
        Value = users.Id.ToString()
    });
}

//创建控制器

// todo: Get all User Id in DropDownList
        AspNetUsers = GetAllUserId();
        ViewBag.Users = AspNetUsers;

//按如下方式创建视图:

<div class="form-group">
        <label asp-for="UserId" class="col-md-2 control-label"><b>User Id:</b></label>
        <div class="col-md-10">
            <select asp-for="UserId" asp-items="@ViewBag.Users" class="form-control"></select>
        </div>
    </div>