在ASP.NET MVC中使用实体框架时的问题
我使用实体框架在ASP.NET MVC中实现我的数据accsee层。我在View中遇到问题。在ASP.NET MVC中使用实体框架时的问题
当我在VIEW类似代码:
我在运行时出现错误:未设置为一个对象的实例
对象引用。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
源错误:
线14:
线15:<%= Model.FirstName%> 第16行:
第17行:这是从强类型的视图模板生成。 我确保我添加了模型referrence到web.config 我没有遇到这个错误,当我使用LINQ to SQL
任何帮助吗?
我想通了! 问题是在VIEW 通常情况下,这将是, 使用(Html.BeginForm(新{ID = Model.Id}))
如果在你的数据库中的主键是类别ID,你会觉得你应该代码适应
编号= Model.CategoryID
但实际上,你应该像这样做,
使用(Html.BeginForm(新{类别ID = Model.CategoryID}))
否则,它不会填充模型。
重振,希望它有帮助!
它看起来好像您的模型未在控制器中正确填充。你的问题中没有足够的信息来确定究竟发生了什么问题。
因为我不能评论一个答案,我会通过一个新的答案做到这一点.. 我注意到你的属性被称为“名字”,你有没有尝试做this教程? 这是您遇到问题的编辑操作?
因为这与我和我的同班同学所面对的问题完全相同。 这是问题的更详细的解释:
这是控制器的动作:
[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被称为exception提高。 (InvalidOperationException异常) 异常消息:
{System.InvalidOperationException: The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type 'ContactManager.Models.Contact'.
at System.Data.Objects.ObjectContext.ApplyPropertyChanges(String entitySetName, Object changed)
at ContactManager.Controllers.HomeController.Edit(Contact contactToEdit) in C:\Users\Jeroen\Desktop\ContactManager\ContactManager\ContactManager\Controllers\HomeController.cs:line 65}
当添加ApplyPropertyChanges之前这一行:
System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);
X确实含有正确类型的一个条目。 (debug image)
注:我做了一个从教程的小偏差,并把实体对象放在一个超类,所以我不必在我所有的控制器中声明相同的对象。但遵循教程时会出现同样的问题。
有时模型为空,因为带有方法.FirstOrDefault()
的select语句没有带来有效的对象。
您可以随时将.FirstOrDefault()
更改为.First()
并重新编译您的解决方案。
这就是我发现的奇怪。我无法提供更多信息,因为我不能。我可以使用但不是 – Smallville 2009-04-29 13:04:17