[英]Problem when using Entity Framework in ASP.NET MVC
我使用實體框架在ASP.NET MVC中實現我的數據訪問層。 我在View中遇到問題。
當我的代碼在VIEW中顯示為:
我在運行時出現錯誤:
你調用的對象是空的。
說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。
異常詳細信息:System.NullReferenceException:對象引用未設置為對象的實例。
源錯誤:
第14行:
第15行:<%= Model.FirstName%>第16行:
第17行:這是從強類型視圖模板生成的。 我確保將模型引用添加到web.config中,而在使用LINQ to SQL時沒有遇到此錯誤
有什么幫助嗎?
由於我無法對答案發表評論,因此我將通過一個新答案進行回答。.我注意到您的屬性稱為“名字”,您是否有機會嘗試做本教程? 這是您遇到問題的“編輯”操作嗎?
因為這是我和我的2個同學所遇到的完全相同的問題。 這是對該問題的更詳細說明:
這是控制器操作:
[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'的對象的引用。
在System.Data.Objects.ObjectContext.ApplyPropertyChanges(字符串EntitySetName,對象已更改)
在C:\\ Users \\ Jeroen \\ Desktop \\ ContactManager \\ ContactManager \\ ContactManager \\ ContactManager \\ Controllers \\ HomeController.cs:line 65}中的ContactManager.Controllers.HomeController.Edit(Contact contactToEdit)處
當我在ApplyPropertyChanges之前添加此行時:
System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);
x確實包含正確類型的條目。 ( 調試圖像 )
注意:我與本教程略有不同,將實體對象放入超類中,因此不必在所有控制器中都聲明相同的對象。 但是,按照本教程進行操作時,也會出現相同的問題。
我想到了! 問題出在VIEW中,通常是使用(Html.BeginForm(new {Id = Model.Id}))
如果數據庫中的主鍵是CategoryID,則您認為應該將代碼修改為
ID = Model.CategoryID
但實際上,您應該這樣做
使用(Html.BeginForm(new {CategoryID = Model.CategoryID}))
否則,它將不會填充模型。
喘口氣,希望對您有所幫助!
有時Model為null,因為帶有.FirstOrDefault()
方法的select語句未帶來有效的對象。
您始終可以將.FirstOrDefault()
更改為.First()
並重新編譯您的解決方案。
看起來您的模型似乎未在控制器中正確填充。 您的問題中沒有足夠的信息來確定到底出了什么問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.