【问题标题】:Unable to get selected value for DropDownListFor (MVC5) [duplicate]无法获取 DropDownListFor(MVC5)的选定值 [重复]
【发布时间】:2018-08-13 05:48:56
【问题描述】:

我能够从我的数据库中检索值并显示在下拉列表中,但我想让它具有一个选定的值,从而我的数据库上有 ID 值。

这是我的代码:

AdminViewModel.cs

public IEnumerable<UserType> UserTypes { get; set; }
public int userTypeID { get; set; }

控制器

var userType = _context.UserTypes.ToList();
var viewModel = new AdminViewModel()
{
     UserTypes = userType
 };
 return View(viewModel);

查看

@Html.DropDownListFor(m => m.userTypeID, new SelectList(Model.UserTypes, "userTypeID", "userTypeName", Model.userTypeID), new { @class = "form-control" })

根据数据库值选择的值应该是 Caregiver:

【问题讨论】:

    标签: c# asp.net-mvc-5 dropdownlistfor


    【解决方案1】:

    改用SelectListItem 并将value 设置为所选项目为真。

    AdminViewModel.cs:

    public IEnumerable<SelectListItem> UserTypes { get; set; }
    public int userTypeID { get; set; }
    

    控制器:

    var viewModel = new AdminViewModel();
    SelectListItem item;
    var userType = _context.UserTypes.ToList();
    foreach(var uType in userType)
      {
       item = new SelectListItem();
       item.Text = userType.userTypeName;
       item.Value = userType.userTypeID;
       if (item.Text == "Caregiver") // or any logic
         {
           item.Selected = true;
         }
         viewModel.UserTypes.Add(item);
       }
    
     return View(viewModel);
    

    查看:

    @Html.DropDownListFor(m => m.userTypeID, Model.UserTypes , "Select", new { @class = "form-control" })
    

    【讨论】:

    • 错了。这与 OP 已经在做的完全一样(在内部,这就是 SelectList 构造函数所做的)。绑定到属性时,Selected 属性会被忽略。
    • 那么请解释一下正确的方法..@steph muecke
    • 阅读副本:)
    • 您好,我已经尝试过这段代码,它仍然显示与我的第一个帖子屏幕截图相同。 link
    猜你喜欢
    • 2018-07-17
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多