【问题标题】:mvc 4 drop down default value selectedmvc 4下拉默认值选中
【发布时间】:2013-05-15 22:03:54
【问题描述】:

我想在 policyId = 7 的下拉列表中选择默认值,但它没有选择该值,我做错了什么?

控制器:

var pm = new ManagerClass();
IEnumerable<myClass> po = pm.GetDataFromDb();
IEnumerable<SelectListItem> Policies = new SelectList(po, "PolicyID", "PolicyName", new { PolicyID = 7 });
ViewBag.Policies = Policies;

查看:

@Html.DropDownListFor(m => m.PolicyID, ViewBag.Policies as IEnumerable<SelectListItem>, new { @class = "dropdown-field"})

【问题讨论】:

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


    【解决方案1】:

    这是因为它实际上并没有选择SelectList中的值。

    首先,为了让它更好,将项目放在你的视图模型中以防止强制转换(这也是更好的做法):

    public class MyModel
    {
        public int PolicyID { get; set; }
        public List<SelectListItem> Policies { get; set; }
        //rest of your model
    }
    

    然后填充它:

    var model = new MyModel();
    model.Policies = po
        .Select(p => new SelectListItem
        {
            Text = p.PolicyName,
            Value = p.PolicyID.ToString(),
            Selected = p.PolicyID == currentPolicyId //change that to whatever current is
        })
        .ToList();
    

    那么在你看来,做:

    @Html.DropDownListFor(m => m.PolicyID, Model.Policies, new { @class = "dropdown-field"})
    

    【讨论】:

      【解决方案2】:

      只需将您的视图模型上的PolicyID 属性设置为您想要预选的值:

      var pm = new ManagerClass();
      var po = pm.GetDataFromDb();
      ViewBag.Policies = new SelectList(po, "PolicyID", "PolicyName");
      
      viewModel.PolicyID = 7;
      return View(viewModel);
      

      由于您的 DropDownList 绑定到 PolicyID 属性 (m =&gt; m.PolicyID),因此在决定预选哪个元素时将使用它的值。

      【讨论】:

      • 在编辑页面这工作,但在添加页面它没有工作。我也在像你一样在添加页面中提供模型的 ID。
      • 我不知道你在说什么编辑和添加页面。这一直对我有用。展示一个允许重现问题的完整示例将有助于更好地理解您的场景。
      • @DarinDimitrov 我已经看到很多问题,当人们将SelectList 放入ViewBag 时,它无法选择。无论是铸造还是其他什么,但补救措施通常只是将下拉菜单粘贴在视图模型中。
      • 对不起我的错误我没有传递模型参数 View("ViewName", viewModel);我只是在使用这个视图(“视图名称”)。 @Mattytommo 我给你积分,你的回答也很有帮助。
      【解决方案3】:

      如果您有静态菜单:

      1- 创建以下类:

      public static class StaticMenus
      {
      
          public static List<string> GetGridRowsCount()
          {
              List<string> result = new List<string>();
              result.Add("3");
              result.Add("5");
              result.Add("10");
              result.Add("20");
              result.Add("25");
              result.Add("50");
              result.Add("100");
      
              return result;
          }
      }
      

      2- 将以下代码添加到您的控制器:

      ViewData["CountryList"] = new SelectList(StaticMenus.GetGridRowsCount(),"10");
      

      3- 将以下代码添加到您的视图中:

      @Html.DropDownList("MainGridRowsCount", ViewData["RowsCountList"] as SelectList)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-03
        • 2014-07-31
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 2016-06-28
        • 2022-06-22
        • 2013-01-22
        相关资源
        最近更新 更多