public class Movies
{
[Key]
public int movieID { get; set; }
public String Title { get; set; }
public virtual Genres parentGenre { get; set; }
}
public class Genres
{
public Genres()
{
this.movies = new HashSet<Movies>();
}
[Key]
public int genreId { get; set; }
public String genreName { get; set; }
public ICollection<Movies> movies { get; set; }
}
我可以在我的addmovie视图页上通过阅读流派表成功创建DropDownList。ASP MVC表外键配置
但是,当我尝试提交页面时,它声明“值'10'是无效的。”这导致我相信我正试图将一个Int(从下拉列表值)放入一个对象(来自“流派parentGenre”)。
我是否已经将“Genre parentGenre”设置为正确的“genreId”外键关系,它只应该为“parentGenre”字段指定一个“数字”还是期望更多?
补充说:
控制器:
[HttpPost]
public ActionResult Create(Movies movies)
{
if (ModelState.IsValid)
{
db.Movies.Add(movies);
db.SaveChanges();
return RedirectToAction("Index");
}
IEnumerable<SelectListItem> items = db.Genres
.Select(c => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)c.genreId).Trim(),
Text = c.genreName
});
ViewBag.genreId = items;
}
观点:
<div class="editor-label">
@Html.LabelFor(model => model.parentGenre.genreName)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.parentGenre,(IEnumerable<SelectListItem>)ViewBag.genreId)
@Html.ValidationMessageFor(model => model.parentGenre)
你如何发布价值?你可以添加更多的控制器/视图代码,以便我们可以更好地了解发生了什么? – antinescience 2013-03-24 20:44:08
添加到上面.... ty的回复:) – user2182715 2013-03-24 20:53:36
在你的DropDownListFor,你有没有尝试过使用model.parentGenre.genreId?我相信MVC模型绑定,你实际上必须使用该属性,否则它不知道该绑定到什么。现在,它试图将一个整数绑定到一个复杂的对象上,并且不改变模型绑定器,它不能实现这个飞跃。 – antinescience 2013-03-24 21:04:43