【发布时间】: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 => model.WhItem.WhBrandId, ViewBag.WhBrandId)? -
我认为是的,这应该是我的答案,但是,我遇到了语法错误。我可以将 viewbag 用作新列表吗?
-
什么是语法错误 - 我不使用 ViewBag 所以不确定但也许你需要明确转换为
SelectList即(SelectList)ViewBag.WhBrandId? -
谢谢,转换(SelectList)已解决。
标签: asp.net asp.net-mvc viewmodel html.dropdownlistfor