我正在尝试创建我的第一个ASP.NET MVC应用程序,但两天来我无法解决我的问题。
我使用的是实体框架代码优先的方法。我想创建DropDownListFor,但总是出现这样的错误:
System.NullReferenceException System.Web.Mvc.WebViewPage.Model.get返回null。
我的模型:
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和dropdown):
@model xyz.Models.Animals
@Html.DropDownListFor(model => model.ClientsId, new SelectList(Model.ClientsList, "ClientsId", "Name", "Surname", "Email", "Phone"))
你能帮我看一下吗?
发布于 2018-06-06 05:44:17
从注释中可以看出,您没有将有效的视图模型对象传递给视图。你的视图代码需要一个有效的模型传递给它,而帮助器方法使用不同的属性。
public ActionResult Create()
{
var clients = new List<Clients>
{
new Clients { ClientsId = 50, Name = "Timo" },
new Clients { ClientsId = 51, Name = "Microsoft" }
};
var vm = new Animals
{
ClientsList = clients
};
return View(vm);
}
此外,您当前调用DropDownListFor
的代码也是错误的。从集合创建SelectList
时,必须传递dataValue字段和dataText字段。
@model Animals
@Html.DropDownListFor(model => model.ClientsId,
new SelectList(Model.ClientsList, "ClientsId", "Name"))
发布于 2019-12-12 15:14:08
尝试在razor视图中使用空模型也可能导致此错误。在这种情况下,在使用模型前检查模型是否为空,如下图所示:
@if (Model != null) {
<a onclick="get('@Url.Action("GetEmployee", "DemoController")', @Model.Id)" ></a>
}
希望这能帮到你。
https://stackoverflow.com/questions/50705788
复制相似问题