Я пытаюсь создать свое первое приложение ASP.NET MVC, но с двух дней я не могу решить свою проблему.
Я использую подход Entity Framework Code First. Я хочу создать DropDownListFor, но всегда есть эта ошибка:
System.NullReferenceExceptionSystem.Web.Mvc.WebViewPage.Model.get возвратил null.
My Модель:
public class Animals
{
public int AnimalsId { get; set; }
public int ClientsId { get; set; }
public string Name { get; set; }
public int TypesId { get; set; }
public float Age { get; set; }
public float Weight { get; set; } public virtual Types Types { get; set; }
public IEnumerable<Clients> ClientsList { get; set; }
public virtual ICollection<BookVisit> AnimalsVisits { get; set; }
}
Мой контроллер:
public ActionResult Create([Bind(Include = "AnimalsId, ClientsId, Name, TypesId, Age, Weight")] Animals animals)
{
var person = new List<Clients>
{
new Clients { ClientsId = 50, Name = "Timo", Surname = "Werner", Email = "timo.werner@gmail.com", Phone = 123123123 }
}; var animalsView = new Animals
{
ClientsList = person.Select(x => new Clients
{
ClientsId = x.ClientsId
})
}; if (ModelState.IsValid)
{
db.Animals.Add(animals);
db.SaveChanges();
return RedirectToAction("List", "Animal");
} return View(animalsView);
}
Мой просмотр (только @model и выпадающее меню):
@model xyz.Models.Animals
@Html.DropDownListFor(model => model.ClientsId, new SelectList(Model.ClientsList, "ClientsId", "Name", "Surname", "Email", "Phone"))
Не могли бы вы взглянуть?
Из комментариев, похоже, что вы не передаете действительный объект модели представления в представление. Ваш код просмотра ожидает действительную модель, переданную ему, и вспомогательные методы используют разные свойства этого.
Также ваш текущий код, который вызывает
DropDownListFor
неправильно. Когда вы создаетеSelectList
из коллекции, вы должны передать поля dataValue и dataText.