C# System.Web.Mvc.WebViewPage<;T>;。Model.get返回null

C# System.Web.Mvc.WebViewPage<;T>;。Model.get返回null,c#,asp.net-mvc,razor,viewmodel,C#,Asp.net Mvc,Razor,Viewmodel,我正在尝试创建我的第一个ASP.NET MVC应用程序,但两天以来我无法解决我的问题 我使用的是实体框架代码优先的方法。我想创建DropDownListFor,但始终存在以下错误: System.NullReferenceException System.Web.Mvc.WebViewPage.Model.get返回空值 我的模型: public class Animals { public int AnimalsId { get; set; } publ

我正在尝试创建我的第一个ASP.NET MVC应用程序,但两天以来我无法解决我的问题

我使用的是实体框架代码优先的方法。我想创建DropDownListFor,但始终存在以下错误:

System.NullReferenceException System.Web.Mvc.WebViewPage.Model.get返回空值

我的模型:

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()
{
     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);
}

此错误也可能是由于尝试在razor视图中使用空模型造成的。在这种情况下,请在使用模型之前检查模型是否为空,如下所示:

@if (Model != null) { 
    <a onclick="get('@Url.Action("GetEmployee", "DemoController")', @Model.Id)" ></a>
}
@if(Model!=null){
}

希望这对您有所帮助。

首先,您的
SelectList
调用错误,为什么要将所有属性名称传递给它?只需为
值传递一个,为
文本传递一个
newselectlist(Model.ClientsList,“ClientsId”,“Name”)
您的GET操作方法是什么样的?您正在将视图模型从该视图传递到视图吗?谢谢您的回答。我将下拉列表替换为“@Html.DropDownListFor(model=>model.ClientsId,newselectlist(model.ClientsList,“ClientsId”,“Name”)”。我的get方法是://get:Animal public ActionResult Create(){return View();}您需要从get-action方法传递一个
Animals
对象,因为您的视图代码希望您的意思是这样的:
//get:Animal public ActionResult Create(){Animals testObj=new Animals();返回视图(testObj);}
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);
}
@model Animals
@Html.DropDownListFor(model => model.ClientsId,
                              new SelectList(Model.ClientsList, "ClientsId", "Name"))
@if (Model != null) { 
    <a onclick="get('@Url.Action("GetEmployee", "DemoController")', @Model.Id)" ></a>
}