【问题标题】:Default Empty Option for MVC dropdown menuMVC 下拉菜单的默认空选项
【发布时间】:2014-12-08 18:55:52
【问题描述】:

我有以下 DropDownListFor 显示状态列表供用户选择。如何默认下拉列表为空。它目前默认为按字母顺序排列的第一个州(“阿拉斯加”)

@Html.DropDownListFor(m => m.User.StateID,
    new SelectList(Model.User.States.Where(filter => filter.Active && (filter.CountryID == 1))
                    .Select(item => new
                        {
                            ID = item.StateProvinceID,
                            Description = item.Name
                        }),
                    "ID",
                    "Description",
                    Model.User.StateID),
    new { @data_bind = "value: user.StateID, enable:!isSiteUser()", tabindex = "10" })

【问题讨论】:

  • 你读过这个答案吗?它有帮助吗? stackoverflow.com/a/7229707/1559978
  • 我查看了该问题和其他一些问题,但我无法获得任何可行的建议。当我尝试为空白默认值添加内容时,HTML 中不断出现错误。
  • 我想通了。其中一项建议确实有效“stackoverflow.com/questions/506001/…”。我只是把它放在错误的地方。太尴尬了。

标签: asp.net-mvc default-value dropdownlistfor


【解决方案1】:

我发现其中一个已发布的问题确实为我的问题提供了正确答案。我只是想不正确地使用它。我将“string.Empty”添加到错误的位置。这就是解决方案。

@Html.DropDownListFor(m => m.User.StateID,
new SelectList(Model.User.States.Where(filter => filter.Active && (filter.CountryID == 1))
                .Select(item => new
                    {
                        ID = item.StateProvinceID,
                        Description = item.Name
                    }),
                "ID",
                "Description",
                Model.User.StateID),
                string.Empty,
new { @data_bind = "value: user.StateID, enable:!isSiteUser()", tabindex = "10" })

【讨论】:

  • 把所有这些逻辑都放在你的视图中是非常糟糕的形式。使用视图模型来保存您的选择列表,或者您可以使用ViewBagViewBag 也有点糟糕,但至少比直接在你的视图中查询要好。
  • 我没有写视图。我目前的任务是对其进行修改。我们正在制定使用 out 文件进行重构的计划,所以我确信它会被包括在内。不过,我非常感谢您的意见。
  • 不要好战,但计划重构就像计划测试一样。除非你直接去做,否则它永远不会发生。重构的最佳时机是当您深入到代码中时。重构应该是一个持续的、永无止境的过程。每当您接触一段代码时,您不仅应该进行任何需要进行的更改,而且还应该重构任何需要更改的内容。这就是改进代码的方式。选择某个未来的日期去重构所有代码是一个白日梦。
  • 目前运行良好。我们已经重构了很多文件,所以它显然不是“白日梦”,因为它正在发生。谢谢你的cmets。我会确保在下次会议上提及您的担忧。
  • 请注意,您不需要使用 .Select(...), 创建匿名对象,也不需要 SelectList 的最后一个参数 (Model.User.StateID) - 选择基于值 User.StateID无论如何。
猜你喜欢
  • 2010-10-05
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多