【问题标题】:Using @Html.DropDownList with ViewModel将 @Html.DropDownList 与 ViewModel 一起使用
【发布时间】:2014-04-24 10:05:17
【问题描述】:

我有一个如下视图模型:

public class WhItemForm
{
    public virtual WhItem WhItem { get; set; }
    public virtual WhItemStock WhItemStock { get; set; }
}

在我的控制器中,我使用 ViewBag 填充选择列表,如下所示:

public ActionResult Create()
    {
        ViewBag.WhBrandId = new SelectList(db.WhBrand, "Id", "Name");
        ViewBag.WhStockCardId = new SelectList(db.WhStockCard, "Id", "Name");
        ViewBag.WhLocationId = new SelectList(db.WhLocation, "Id", "Name");
        return View();
    }

我的 WHITEM 模型中有 BrandID 属性,这是我的 WHITEM 模型。

public class WhItem
{
    public int Id { get; set; }

    public int WhBrandId { get; set; }
    public virtual WhBrand WhBrand { get; set; }

}

当我从视图发布数据时,我无法设置 WhBrandID,我的视图如下:

 <div class="form-group">
            @Html.LabelFor(model => model.WhItem.WhBrandId, "WhBrandId", new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("WhBrandId", String.Empty)
                @Html.ValidationMessageFor(model => model.WhItem.WhBrandId)
            </div>
        </div>

我知道,我需要将此值作为 WhItem.WhBrandId 传递,因为我在视图中使用 viewmodel。我可以为@html.TextBoxFor 执行此操作,但是如何更正下拉列表以将其值作为 WhItem.WhBrandId 传递给控制器​​。

问候

【问题讨论】:

  • 不能用DropDownListFor吗?像这样@Html.DropDownListFor(model =&gt; model.WhItem.WhBrandId, ViewBag.WhBrandId)?
  • 我认为是的,这应该是我的答案,但是,我遇到了语法错误。我可以将 viewbag 用作新列表吗?
  • 什么是语法错误 - 我不使用 ViewBag 所以不确定但也许你需要明确转换为 SelectList(SelectList)ViewBag.WhBrandId
  • 谢谢,转换(SelectList)已解决。

标签: asp.net asp.net-mvc viewmodel html.dropdownlistfor


【解决方案1】:

首先我建议你像这样编辑你的控制器:

    public ActionResult Create()
    {
        ViewBag.SelectList = new List<SelectListItem>
        {
            new SelectListItem{Text = "Text",Value = "Value"},
            new SelectListItem{Text = "Text",Value = "Value"},
            new SelectListItem{Text = "Text",Value = "Value"}
        };

        return View();
    }

之后将您的视图编辑为:

@Html.DropDownListFor(x => x.WhItem.WhBrandId, (List<SelectListItem>)ViewBag.SelectList)

【讨论】:

  • 我想从 viewbag 中的控制器获取新的 List 。你能编辑你的代码吗?当我想使用 viewbag 时出现错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多