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; }
}
Genres テーブルを読み取ることで、addmovie ビュー ページに DropDownList を正常に作成できます。
しかし、ページを送信しようとすると、「値 '10' は無効です」と表示されます。これにより、(ドロップダウンリストの値から) Int を (「Genres parentGenre」から) オブジェクトに入れようとしていると思われます。
「genresparentGenre」から「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)