【问题标题】:Choose which option is selected on pageload of razor html.dropdownlistfor选择在 razor html.dropdownlistfor 的页面加载时选择哪个选项
【发布时间】:2017-09-23 23:54:19
【问题描述】:

我有一个使用 razor 创建的下拉列表,它显示 2 个选项:“显示”或“隐藏”,它们的值分别为“0”和“1”。

 if (Model.Valeur == 0)
 {
      @Html.DropDownListFor(m => m.Valeur,
      new List<SelectListItem> {
      new SelectListItem { Value = "0" , Text = "Show", Selected = true },
      new SelectListItem { Value = "1" , Text = "Hide" },
      }, new { @class = "myselect" })
 }
 else
 {
     @Html.DropDownListFor(m => m.Valeur,
     new List<SelectListItem> {
     new SelectListItem { Value = "0" , Text = "Show" },
     new SelectListItem { Value = "1" , Text = "Hide",  Selected = true },
     }, new { @class = "myselect" })
 }

我所做的 if 条件可以在页面加载时设置正确的值,但我想知道是否有办法使用参数或其他选项设置选定的值

任何信息都会很高兴。

【问题讨论】:

  • 我认为当你无条件传递值时它会被选中
  • Valuer 属性有多个值,还是该属性只有值 0 或 1?
  • m 的 value 属性可以是 1 或 0,我想根据它向用户显示选择的选项
  • 它只是@Html.DropDownListFor(m =&gt; m.Valeur, new List&lt;SelectListItem&gt; { new SelectListItem { Value = "0" , Text = "Show" }, new SelectListItem { Value = "1" , Text = "Hide" }, }, new { @class = "myselect" }) - 不需要if 块,也不需要Selected 属性(绑定到属性时会被忽略

标签: asp.net-mvc html razor asp.net-mvc-5


【解决方案1】:

您可以使用简写 if 来确定选择了哪个选项。

 @Html.DropDownListFor(m => m.Valeur,
 new List<SelectListItem> {
 new SelectListItem { Value = "0" , Text = "Show", Selected = Model.Valeur == 0 },
 new SelectListItem { Value = "1" , Text = "Hide", Selected = Model.Valeur != 0 },
 }, new { @class = "myselect" })

【讨论】:

  • 这里不需要使用三元运算符,可以使用Model.Valeur == 0Model.Valeur != 0;它们都将自行返回 true 或 false。
  • 这非常适合我的需要,所以谢谢,我所做的唯一改变是我删除了@Vaterrenanburg 所说的三元运算符
  • @Vaterrenanburg 你的权利,只需使用正确的数字(0 或 1)并忽略 ? true : false 部分
  • 请记住,混合逻辑和表示并不是一个好主意。 DropDownList 值的构造应在 ViewModel 中完成,如果项目是动态加载的,则应在 Controller 中完成。
  • SelectListItemSelected 属性在绑定到模型属性时被忽略 - 包含它只是没有意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
相关资源
最近更新 更多