我在视图中有这个下拉列表:
@Html.DropDownList("Sale.TypeTransaction", ViewBag.typetransaction as SelectList, new { @class = "form-control" })
如您所见,下拉列表的名称为Sale.TypeTransaction
,因为Sale
它是自定义模型中的模型:
public class OfficeSale
{
public OfficeSale()
{
SaleProductRelations = new List<SaleProductRelation>();
Sale = new Sale();
}
public Sale Sale { get; set; }
public List<SaleProductRelation> SaleProductRelations { get; set; }
}
Sale
拥有属性TypeTransaction
,它是string
。在我的控制器中,我按如下方式填写选择列表:
public ActionResult NewSale()
{
var list = new List<SelectListItem>();
list.Add(new SelectListItem { Text = "Cash", Value = "Cash" });
list.Add(new SelectListItem { Text = "Credit", Value = "Credit" });
list.Add(new SelectListItem { Text = "Promotion", Value = "Promotion" });
ViewBag.typetransaction = list;
return View(new OfficeSale());
}
我知道如果我的viewbag与我的属性名称相同,则下拉列表已填充。但我不能写ViewBag.sale.typetransaction
。你有什么想法解决这个问题吗?提前谢谢。
好的我尝试了以下内容,因为@StephenMuecke建议它起作用了:
public ActionResult NewSale()
{
var list = new List<string>();
list.Add("Cash");
list.Add("Credit");
list.Add("Promotion");
ViewBag.typetransaction = new SelectList(list);
return View(new OfficeSale());
}
@Html.DropDownList("Sale.TypeTransaction", ViewBag.typetransaction as SelectList, new { @class = "form-control" })
答案 0 :(得分:0)
ViewBag.typetransaction as SelectList
这让我很烦恼。
由于DropDownList
帮助器期望第二个参数为IEnumerable
(我相信您正在调用此构造函数https://msdn.microsoft.com/en-us/library/dd470380%28v=vs.118%29.aspx),因此您可能需要转换为IEnumerable<SelectListItem>
。
答案 1 :(得分:0)
您的问题是,在控制器中,您将ViewBag.typetransaction
指定为IEnumerable<SelectListItem>
的类型,但在视图中您尝试将其转换为SelectList
类型,这会导致ViewBag.typetransaction
成为null
SelectList
。
IEnumerable<SelectListItem>
是SelectList
(MultiSelectList
派生自IEnumerable<SelectListItem>
,其源自IEnumerable<SelectListItem>
),但SelectList
不是 ViewBag
有两个选项可以解决这个问题。首先,在视图中,将@Html.DropDownList("Sale.TypeTransaction", ViewBag.typetransaction as IEnumerable<SelectListItem>, new { @class = "form-control" })
属性强制转换为html帮助程序中的正确类型
SelectList
或者,在视图中,创建一个ViewBag.typetransaction = new SelectList(new List<string>() { "Cash", "Credit", "Promotion" });
,例如
contactgrouping