我有一个看法。在视图中我有几个月的字段(数据库中的 nvarchar 类型):
@Html.DropDownListFor(model => model.rent_month,
(IEnumerable<SelectListItem>)ViewBag.months)
我在模型类(PostManager)中有一个方法来生成月份列表,例如:
public IEnumerable<SelectListItem> GetMyMonthList()
{
return CultureInfo.CurrentCulture.DateTimeFormat.MonthNames
.Select(m => new SelectListItem() { Text = m, Value = m });
}
我有几个月的时间采取行动:
public ActionResult Create()
{
PostModel p = new PostModel();
ViewBag.months = pm.GetMyMonthList();
return View(p);
}
在我的模型中,我的月份属性:
[Required(ErrorMessage = "You Must Select a Month.")]
[Display(Name = "Select Rent Month")]
public string rent_month { get; set; }
在发布动作中:
public ActionResult Create(PostModel p)
{
if (ModelState.IsValid)
{
post post = new Models.DB.post();
post.rent_month = p.rent_month;
db.posts.AddObject(post);
db.SaveChanges();
}
}
它在下拉列表中正确生成月份。但是在提交表单后它给出了错误:
具有键“rent_month”的 ViewData 项的类型为“System.String”,但必须为“IEnumerable”类型
现在这个错误的解决方案是什么......提前谢谢......