首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.Web.Mvc.WebViewPage<T>.Model.get返回null

System.Web.Mvc.WebViewPage<T>.Model.get返回null
EN

Stack Overflow用户
提问于 2018-06-06 01:27:13
回答 2查看 4.7K关注 0票数 -1

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

我使用的是实体框架代码优先的方法。我想创建DropDownListFor,但总是出现这样的错误:

System.NullReferenceException System.Web.Mvc.WebViewPage.Model.get返回null。

我的模型:

代码语言:javascript
运行
复制
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; }
    }

我的控制器:

代码语言:javascript
运行
复制
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):

代码语言:javascript
运行
复制
@model xyz.Models.Animals    
@Html.DropDownListFor(model => model.ClientsId, new SelectList(Model.ClientsList, "ClientsId", "Name", "Surname", "Email", "Phone"))

你能帮我看一下吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-06 05:44:17

从注释中可以看出,您没有将有效的视图模型对象传递给视图。你的视图代码需要一个有效的模型传递给它,而帮助器方法使用不同的属性。

代码语言:javascript
运行
复制
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字段。

代码语言:javascript
运行
复制
@model Animals
@Html.DropDownListFor(model => model.ClientsId,
                              new SelectList(Model.ClientsList, "ClientsId", "Name"))
票数 0
EN

Stack Overflow用户

发布于 2019-12-12 15:14:08

尝试在razor视图中使用空模型也可能导致此错误。在这种情况下,在使用模型前检查模型是否为空,如下图所示:

代码语言:javascript
运行
复制
@if (Model != null) { 
    <a onclick="get('@Url.Action("GetEmployee", "DemoController")', @Model.Id)" ></a>
}

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50705788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档