В настоящее время у меня есть следующие объекты:
фильм:Entity отношения в DropdownListFor
public class Movie
{
public int ID { get; set; }
[Required]
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
[Required]
public string Genre { get; set; }
[DataType(DataType.Currency), Range(1,100)]
public decimal Price { get; set; }
[StringLength(5)]
public string Rating { get; set; }
[StringLength(200)]
public string comments { get; set; }
public Director director { get; set; }
}
Режиссер:
[Table("Director")]
public class Director
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required, MaxLength(50)]
[Display(Name = "Name")]
public string name { get; set; }
[Required, MaxLength(50)]
[Display(Name = "Last Name")]
public string lastName { get; set; }
[Required, Range(1,100)]
public int age { get; set; }
[NotMapped]
public string fullName {
get { return this.name + " " + this.lastName; }
}
}
Когда я получить доступ к форме редактирования, я загружаю SelectList из директоров в DB:
public ActionResult Edit(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
ViewBag.Directors = new SelectList(db.Directors.ToList(), "ID", "fullname");
return View(movie);
}
Затем я использую @ Html.DropDownListДля отображения поле со списком в форме:
<div class="editor-field">
@Html.DropDownListFor(model => model.director, (SelectList)ViewBag.Directors, "Select")
@Html.ValidationMessageFor(model => model.director)
</div>
Все вроде бы хорошо, но когда я выбираю вариант и попытаться сохранить форму, я получаю сообщение проверки о том, что «значение„1“недействителен». Где «1» - идентификатор директора.
Итак, определенно мне не хватает чего-то, чтобы напрямую связать директора.
Ваш выпадающий список - это список идентификаторов, свойство вашего директора имеет тип 'Director'. У вас должно быть свойство 'DirectorID' где-то в этом классе' Movie'. – dom
Нет ли способа сделать то же самое без добавления идентификатора DirectorID? –
Для этого вам нужно будет создать настраиваемое связующее устройство. Или лучший способ создать ViewModel специально для формы, содержащей свойство DirectorId. – mxmissile