我试图从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>
}
答案 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>