【问题标题】:MVC DropDownListFor Bind on Nested ClassMVC DropDownListFor 绑定嵌套类
【发布时间】:2013-09-25 14:03:36
【问题描述】:

抱歉,这可能很明显,但我只需要检查一下。我有一个包含相关信息的嵌套类的类。该类是单数的,不在列表或任何内容中,但 MVC 不会绑定到该字段。

型号

public class Car
{
    public GloveBoxDetail GloveBox = new GloveBoxDetail();
}

public class GloveBoxDetail
{
    public bool isLockable{get;set;}
}

查看

@Html.DropDownListFor(model => model.GloveBox.isLockable, new SelectList(...))

我必须手动创建 DropDownList 吗?

谢谢

克里斯

【问题讨论】:

  • 下拉列表不是只用于收藏吗?有哪些可供选择的选择?
  • @gunr2171 常见误解:下拉菜单用于选择单个值,而不是集合。该集合必须来自其他地方,这在他的代码中的new SelectList() 中表示
  • @Kippie,我的立场是正确的。谢谢。
  • 使用复选框怎么样?

标签: c# asp.net-mvc razor html-helper dropdownlistfor


【解决方案1】:

您可以将任何 IEnumarable 绑定到 DropDownList

请这样尝试

在控制器中

List<SelectListItem> yesno=new List<SelectListItem>();
yesno.add(new SelectListItem("Yes","Yes",true);
yesno.add(new SelectListItem("No","No");

ViewBag.YesNoList=yesno;

在视图中

@Html.DropDownListFor(model => model.GloveBox.isLockable,
      IEnumbarable<SelectListItem>(ViewBag.YesNoList))

在这种情况下最好使用@Html.CheckboxFor。如果您需要Nullable&lt;bool&gt;,那么您可能需要创建自己的自定义 Html 助手

creating custom helper查看此帖子

【讨论】:

    【解决方案2】:

    昨晚设法弄明白了。它仅用于显示数据,因此不需要更新模型,因此我无需担心绑定回发。我通过将选择列表的“选定值”设置为模型来解决它,很脏但它可以工作。

    谢谢

    克里斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多