每个插入 cshtml 页面都会出现相同的错误
Posted
技术标签:
【中文标题】每个插入 cshtml 页面都会出现相同的错误【英文标题】:every insert cshtml page getting same error 【发布时间】:2021-11-10 05:37:37 【问题描述】:我的项目中有 4 个模型类。每个模型类都有插入页面。在我的每个插入数据页面中,我都收到与System.NullReferenceException
相同的错误。此错误显示在每个 @html.EditorFor
属性中。
假设,我的插入数据页面(cshtml 页面)中有 3 个输入属性,然后在每个属性中显示与 System.NullReferenceException
相同的错误。我不明白为什么会这样?请看附图。我无法调试它,因为错误显示在 cshtml 页面中。请帮我解决这个错误。
当我在我的方法中实例化模型类并传递给查看页面时,它起作用了。但是现在我很想知道是否这样,为什么实体框架构建的方法没有实例化模型类并传递给查看页面。
public ActionResult Create()
return View();
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "UserId,UserName,Password,Department,LocalLvl,Status")] UserModel userModel)
if (ModelState.IsValid)
db.UserModels.Add(userModel);
db.SaveChanges();
return RedirectToAction("Index");
return View(userModel);
上面的方法是由实体框架脚手架过程创建的,为什么不实例化模型类。之前,我的项目运行成功,然后突然开始显示错误?请帮忙。
【问题讨论】:
您是否将实例化模型从控制器传递到视图?按照惯例,您需要在视图顶部声明要传递给视图的类型。@model YourNameSpace.Models.YourViewModel
确保为您的 GET/POST 方法返回模型到视图。例如:return View(model);
【参考方案1】:
预计您已在页面顶部定义了@model
,该页面应接收该类型的对象。
@model YourProject.Models.LoginModel
并确保您已返回模型实例以传递给您的视图。否则,@model
将是 null
。
public ActionResult Login()
// Implementation
var model = new LoginModel();
return View(model);
[HttpPost]
public ActionResult Login(LoginModel model)
// Implementation
return View(model);
参考文献
Strongly typed models and the @model directive
【讨论】:
感谢您的回答,它奏效了。但是为什么默认的 create 方法不实例化模型类呢?以及我是如何突然开始出错的。请你也建议/回复一下。 您好,很高兴我的回答对您有所帮助。因为视图预计会收到@model
,如果没有通过控制器返回模型来查看,@model 将没有价值,因此它是null
。您可以阅读我在参考资料中分享的文章。本教程将帮助您了解和熟悉 ASP.NET MVC。以上是关于每个插入 cshtml 页面都会出现相同的错误的主要内容,如果未能解决你的问题,请参考以下文章
如果 .cshtml 文件中存在 razor/C# 错误,如何在 VS 2013 中使构建失败? [复制]