【问题标题】:Select object from a drop down list从下拉列表中选择对象
【发布时间】:2014-01-15 19:49:20
【问题描述】:

我有一个 Razor 视图,我正在编辑 Document 对象并尝试修改关联的 Currency 记录。可用的Currency 列在下拉列表中。

我在 EF 中有两个类,如下所示。

public class Document
{
    public Currency CurrencyCode { get; set; }
}

public class Currency
{
    [Key]
    public string CurrencyCode { get; set; }

    [Column(TypeName = "Money")]
    public decimal ExchangeRate { get; set; }
}

我正在创建这样的下拉列表:

@Html.DropDownListFor(m => m.CurrencyCode.CurrencyCode, new SelectList(ViewBag.Currencies, "CurrencyCode", "CurrencyCode"), Model.LocalCurrencyCode.CurrencyCode)

当我使用提交按钮发布视图时,我可以看到值已发布:CurrencyCode.CurrencyCode:USD。模型绑定器很好地绑定了我所有的简单数据字段(其他字段未显示)。但是 Document.CurrencyCode 对象保留为 null。

我的计划是只带回 CurrencyCode 值,然后使用实体框架查找实际对象引用并关联它。但是现在我什至没有得到一个半满的物体......

【问题讨论】:

  • 只有 for 助手中的值(显示除外)才会返回给控制器。如果你想让 document.currencycode 回来,你应该把它隐藏起来或类似的东西

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


【解决方案1】:

我假设您将复杂类型模型传递给您的视图。要从DropdownList 中获取选定的值,您需要明确告诉模型绑定器要将数据绑定到哪个模型。见下例:

@Html.DropDownList("CurrencyCode.CurrencyCode", new SelectList(ViewBag.Currencies, "CurrencyCode", "CurrencyCode"), Model.LocalCurrencyCode.CurrencyCode)

【讨论】:

  • 完美,我的问题解决了。我以为我必须用一个视图模型来包装它,但这成功了。
猜你喜欢
  • 2021-12-13
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2018-01-29
  • 2021-10-30
  • 2017-05-19
相关资源
最近更新 更多