c# - System.NullReferenceException: System.Web.Mvc.WebViewPage.Model.get 返回 null
问题描述
我是 MVC 的初学者并尝试创建一个页面...我的数据库中有三个表...我使用的是 Entity Framework DB 第一种方法,我将这三个表创建为我的“模型”文件夹下的类...我还创建了一个名为“AllClasses”的新类,并在这个新类中定义了这三个类中的每一个......我试图从“tblCharacter”表“CharacterImageURL”列中获取 3 张图片......当我运行我的代码“ return View(myclass)" 我收到一个错误 => System.NullReferenceException: System.Web.Mvc.WebViewPage.Model.get returned null... 问题return View(myclass);
是返回 NULL...所以我认为问题出在我的控制器上...
我知道有类似的问题,但没有一个解决方案对我有用......
这是我的控制器部分:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using StarWars.Models;
namespace StarWars.Controllers
{
public class HomeController : Controller
{
StarWarsFunClubDBEntities myobject = new StarWarsFunClubDBEntities();
public ActionResult Index()
{
return View();
}
public ActionResult SWHome()
{
var myclass = new AllClasses();
myclass.Avatars = myobject.tblAvatars.ToList();
myclass.Characters = myobject.tblCharacters.ToList();
myclass.Comments = myobject.tblComments.ToList();
return View(myclass);
}
}
}
这是我的主页 SWHome.cshtml
@model StarWars.Models.AllClasses
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>SWHome</title>
<link rel="stylesheet" type="text/css" href="~/Content/css.css" />
</head>
<body>
<div class="box">
<div class="header">
<div class="logo"> <img src="~/images/Star_Wars_Logo.png" alt="Alternate Text" /> </div>
<div class="sitename"><h4>Star Wars Fun Club</h4></div>
</div>
<div class="question"><h5>What do you think about the new characters of Star Wars: The Force Awakens(2015)?</h5></div>
<div class="photo">
<div class="innerphoto">
@foreach (var item in Model.Characters)
{
<img src="@item.CharacterImageURL" alt="" />
}
</div>
</div>
<div class="comment"></div>
<div class="addcomment"></div>
<div class="footer"></div>
</div>
</body>
</html>
这些是我在 EF DB First 的帮助下自动生成的课程
namespace StarWars.Models
{
using System;
using System.Collections.Generic;
public partial class tblAvatar
{
public int AvatarID { get; set; }
public string AvatarName { get; set; }
public string AvatarImageURL { get; set; }
}
}
namespace StarWars.Models
{
using System;
using System.Collections.Generic;
public partial class tblComment
{
public int CommentID { get; set; }
public string Expression { get; set; }
public System.DateTime DateTime { get; set; }
public int AvatarID { get; set; }
}
}
namespace StarWars.Models
{
using System;
using System.Collections.Generic;
public partial class tblCharacter
{
public int CharacterID { get; set; }
public string CharacterName { get; set; }
public string CharacterImageURL { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using StarWars.Models;
using StarWars.Controllers;
using System.Data.Entity;
namespace StarWars.Models
{
public class AllClasses
{
public IEnumerable<tblAvatar> Avatars { get; set; }
public IEnumerable<tblCharacter> Characters { get; set; }
public IEnumerable<tblComment> Comments { get; set; }
}
}
解决方案
您List<StarWars.Models.AllClasses>
在视图中,但您正在AllClasses
从 method中返回SWHome
。
在您的情况下,您需要使用@model StarWars.Models.AllClasses
删除foreach
视图中的循环。并像这样直接访问该属性。Model.Characters
推荐阅读
- fonts - 如何编写可变字体?
- cmake - 如何使用 cmake 和 gcc 生成 PDB 文件?
- python - 在 pandas 中运行多个具有函数的交叉表
- c# - 提要“nuget.org [https://api.nuget.org/v3/index.json]”列出了包“Microsoft.Identity.Client.4.14.0”,但多次尝试下载
- sql - Alembic 执行中的内部联接语法错误
- vue.js - Vue 3 访问数组对象
- sql - 我如何只能从 XML 中获取一个 IBAN
- android - 如何在 onStart() 中添加函数 | 科特林
- server - 如何解决 iLO 4 在 HP Proliant 服务器上检测到自检错误
- mongodb - 修复 mongodb 在 kubernetes 中独立