【发布时间】:2017-07-21 12:40:00
【问题描述】:
这就是我填充下拉列表和创建 html 元素的方式;
帐户控制器:
public ActionResult Index()
{
ViewBag.Towns = new SelectList(_skrsService.GetTowns(), "Value", "Text", 1);
return View();
}
...
public List<SelectListItem> GetTowns()
{
var list = UnitOfWork.Repository<SkrsIl>().OrderBy(x => x.Adi).Select(x => new SelectListItem()
{
Text = x.Adi,
Value = x.Kodu.ToString()
}).ToList();
return list;
}
Login.cshtml(家乡是模型中绑定到登录视图页面的字符串字段):
@Html.DropDownListFor( x => x.Hometown, ((SelectList)ViewBag.Towns), new { @class = "form-control", placeholder = "Doğum Yeri" })
我希望这可以工作,但收到错误消息:
"具有键 'Hometown' 的 ViewData 项的类型为 'System.String' 但必须是 'IEnumerable
' 类型。"
我怎样才能让它正常工作?我只是期望选择项值为“家乡”属性
【问题讨论】:
-
表示
viewBag.Towns的值为null——参考this answer。附带说明一下,使用new SelectList()是毫无意义的额外开销 - 您创建一个相同的IEnumerable<SelectListItem>并且构造函数的第 4 个参数被忽略 - 它的Hometown的值决定了选择的内容 -
您好,您的评论包含的内容超出了我的需要,如果您将此作为答案发布,我很乐意接受,谢谢!