首页 > 解决方案 > Html.DropDownListFor 不会将值选择到属性中

问题描述

我花了一些时间在 Stack Overflow 上寻找与我有相同问题的人。我的 Html.DropDownListFor 在视图中,不会将值选择到属性中。这对我来说看起来是正确的,但我对此很陌生。任何建议将不胜感激。谢谢你,肯

public class SelectUserModel
{
public SelectUserModel()
{
    this.users = new List<string>();
}
public List<string> users { get; set; }
public string UserName { get; set; }
}

Controller
[HttpGet]
public ActionResult SelectUser()
{
    SelectUserModel selectUserModel = new SelectUserModel();
    var userNames = selectUserModel.users;
  if (User.IsInRole("Admin"))
  {
    var reader = Connection.ExecuteReader("select distinct username from users");
    while (reader.Read())
    {
       userNames.Add(reader["username"].ToSafeString());
    }
    else
    {
       userNames.Add(User.GetUserId());
    }
    return View(selectUserModel);
}
View
@model xxxx.Web.Models.SelectUserModel
...
@{
var MySelectList = new List<SelectListItem>();
foreach (var user in Model.users)
{
    MySelectList.Add(new SelectListItem
    {
        Value = user,
        Text = user
     });
}
}
@using (Html.BeginForm())
{
    <div class="col-md-8">
        @if (User.IsInRole("Admin"))
        {
          @Html.DropDownListFor(model => model.UserName, new 
          SelectList(MySelectList.GroupBy(o => o.Value).Select(c => 
          c.FirstOrDefault()), "Value", "Text"), new { @class = "form-control" })

          @Html.ValidationMessageFor(model => model.UserName, "", new { 
`@class = "text-danger" })
...
Html looking at page source
<form action="/Manager/SelectUser" method="post"> -- not sure why this `
shows post?


<div class="col-md-8">
<select class="form-control" id="UserName" name="UserName"><option 
value="administrator">administrator</option>
...
</select><span class="field-validation-valid text-danger" data-valmsg- 
for="UserName" data-valmsg-replace="true"></span>                        
</div>
</form>

标签: html

解决方案


推荐阅读