2012-04-27 31 views
0

我一個的AccountController這樣asp.net MVC 3錯誤: 「對象引用不設置到對象的實例」

public class AccountController : Controller 
{ 
    [Authorize] 
    public ActionResult MyProfile(string userEmail) 
    { 
     UserManager um = new UserManager(); 
     UserProfile user = new UserProfile(); 
     user = um.GetUserDetail(userEmail); 
     return View(user); 
    } 
} 

我UserManager.cs像這樣

public class UserManager 
{ 
    private ToLetDBEntities TLE = new ToLetDBEntities(); 
    public UserProfile GetUserDetail(string uemail) 
    { 
     var userDetails = TLE.users.FirstOrDefault(x => x.email_add == uemail); 

     UserProfile up = new UserProfile(); 
     up.cellno = userDetails.cellno.Trim(); 
     up.email_add = userDetails.email_add.Trim(); 
     up.name = userDetails.name.Trim(); 
     up.password = userDetails.password.Trim(); 

     return up; 
    } 
} 

當我調試它給像

Object reference not set to an instance of an object
Null Reference Exception was Unhandled by User

錯誤在這行

up.cellno=userDetails.cellno.Trim(); 

GetUserDetails函數。

回答

0

該錯誤表明您沒有userDetails實例,因此無法獲取cellno屬性。

您確定TLE.users.FirstOrDefault(x => x.email_add == uemail)正在返回東西嗎?如果你在給出錯誤的行上放置一個斷點,那麼你可以檢查userDetails的值是什麼 - 它可能是空值。

+0

是,爲userDetails是null.can你幫我查詢請... @LordSauce – 2012-04-27 23:38:20

0

很可能這查詢不返回任何東西:

TLE.users.FirstOrDefault(x => x.email_add == uemail); 

FirstOrDefault方法不會給任何指示,如果不返回任何記錄。 OrDefault部分指定了此行爲。對於任何給定的返回類型,如果沒有找到記錄,它將返回該類型的「默認」。

對於參考類型(您的是),默認值爲null。因此,這個調用會產生完全是例外:

userDetails.cellno.Trim(); 

由於userDetailsnull話,就不能訪問cellno屬性,因此例外。

這也是你的情況可能userDetails不是null而是cellno財產上。這不太可能,但可能。在調試時查看運行時值會告訴你是否是這種情況。

如果userDetailsnull,請檢查您的查詢條件。也許users集合沒有任何內容?也許有沒有與您的x.email_add == uemail相匹配的記錄? (這很可能)

如果cellnonull那麼你會想要檢查該對象是如何構建的,數據庫中的數據是什麼樣的等等。無論哪種方式,你都沒有找回你的數據期望。問題在於你正在訪問的數據。

+0

感謝大衛。我已經將查詢改爲:var userDetails = TLE.users.Single(x => x.email_add == uemail);它給出了錯誤:「序列不包含任何元素」 – 2012-04-27 23:48:44

+0

@AwladLiton:這意味着查詢沒有返回任何結果,因爲我懷疑。看起來沒有'users',其中'email_add'等於被傳遞給id的'uemail'值。你有沒有檢查數據,看看你正在尋找的記錄是否存在? – David 2012-04-28 00:09:29

相關問題