我使用Entities Framework在ASP.NET MVC中实现我的数据accsee层。我在View中遇到了问题。

当我在VIEW中的代码时:

 

我在运行时遇到错误:

对象引用未设置为对象的实例。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

来源错误:

第14行:

第15行:<!> lt;%= Model.FirstName%<!> gt; 第16行:

第17行:

这是从强类型视图模板生成的。 我确保我在web.config中添加了模型引用 我在使用LINQ to SQL

时没有遇到此错误

任何帮助?

有帮助吗?

解决方案 2

我明白了! 问题出在VIEW中 通常,它会是,  使用(Html.BeginForm(new {Id = Model.Id}))

如果数据库中的主键是CategoryID,您会认为应该将代码调整为

Id = Model.CategoryID

但实际上,你应该这样做,

使用(Html.BeginForm(new {CategoryID = Model.CategoryID}))

否则,它不会填充模型。

复活,希望它有所帮助!

其他提示

由于我无法对答案发表评论,我将通过新答案进行评论。 我注意到你的属性被称为<!> quot; FirstName <!>“;你是否有机会尝试这个教程? 这是您遇到问题的编辑操作吗?

因为这和我和我的同学中有两个问题完全相同。 以下是对该问题的更详细解释:

这是控制器动作:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Contact contactToEdit) {
    if (!ModelState.IsValid)
        return View();

    try {
        var originalContact = (from c in base._entities.ContactSet
                               where c.Id == contactToEdit.Id
                               select c).First();
        base._entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
        base._entities.SaveChanges();

        return RedirectToAction("Index");
    } catch(Exception e) {
        return View();
    }
}

当调用ApplyPropertyChanges时,会引发例外。 (InvalidOperationException异常) 异常消息:

  

{System.InvalidOperationException:ObjectStateManager不包含ObjectStateEntry,其中引用了“ContactManager.Models.Contact”类型的对象。
  at System.Data.Objects.ObjectContext.ApplyPropertyChanges(String entitySetName,Object changed)
  在ContactManager.Controllers.HomeController.Edit(联系contactToEdit)C:\ Users \ Jeroen \ Desktop \ ContactManager \ ContactManager \ ContactManager \ Controllers \ HomeController.cs:第65行}

当我在ApplyPropertyChanges:

之前添加此行时
System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);

x确实包含正确类型的条目。 (调试图片

注意:我偏离了教程并将实体对象放在超类中,因此我不必在所有控制器中声明相同的对象。但是在学习本教程时会出现同样的问题。

看起来您的模型未在控制器中正确填充。你的问题中没有足够的信息可以弄清楚到底出了什么问题。

有时模型为null,因为带有方法.FirstOrDefault()的select语句没有带来有效对象。

您始终可以将.First()更改为<=>并重新编译解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top