2014-01-22 117 views
0

我有一個填充年齡範圍爲0-100的下拉列表。這樣用戶就可以選擇並通過linq將選定的值插入到數據庫中。用戶在數據庫中沒有年齡值,但這是他稍後將在編輯頁面上添加的內容。問題是如果在數據庫中沒有年齡的NULL值,則加載「編輯配置文件頁面」時會出現錯誤。當數據庫中沒有數據時填充下拉列表

錯誤消息:

System.NullReferenceException: Object reference not set to an instance of an object. at DatingSite.Members.Redigera.getData(Guid user) in c:\DatingSite\DatingSite\Members\Redigera.aspx.cs:line 43 

代碼下拉列表:

public void addAge() 
     { 
     dropAge.Items.Insert(0, "Välj ålder"); 
     int index = 1; 
     for (int i = 0; i <= 100; i++) 
     { 
      ListItem li = new ListItem(i.ToString(), i.ToString()); 
      dropAge.Items.Insert(index, li); 
      index++; 
     } 
    } 

代碼用於獲取用戶的信息:

private void getData(Guid user) 
    { 
     var repository = new DAL.Repository.UpdateRepository(); 
     currentProfilbild.ImageUrl = "~/" + repository.getAvatar(user); 
     Fnamn.Text = repository.getName(user); 
     Enamn.Text = repository.getEnamn(user); 
     tbxPresText.Text = repository.getPresText(user); 
     var gender = repository.getGender(user); 

     try 
     { 
      var age = repository.getAge(user).Trim(); 

      if (string.IsNullOrEmpty(age)) 
      { 
       addAge(); 

      } 
      else 
      { 
       dropAge.SelectedValue = repository.getAge(user).Trim(); 
      } 
     } 
     catch (Exception ex) 
     { 
      lblError.Text = ex.ToString(); 
     } 
    } 

的LINQ代碼:

public string getAge(Guid uID) 
    { 
     using (var context = new dbEntities()) 
     { 
      var user = context.UserInformation.First(c => c.UserId == uID); 
      return user.Ålder; 
     } 
    } 

回答

0

的錯誤可能是在這裏:

public string getAge(Guid uID) 
{ 
    using (var context = new dbEntities()) 
    { 
     var user = context.UserInformation.First(c => c.UserId == uID); 

     if(user != null && !String.IsNullOrEmpty(user.Ålder)) 
      return user.Ålder; 
     else 
      return string.empty; 
    } 
} 
+0

謝謝你,這似乎解決了這個問題。 :) – asdfg

0

我的猜測是這裏的例外,因爲年齡爲零,並且您正在嘗試執行修剪操作。

var age = repository.getAge(user).Trim(); 

可能是你可以做到這一點。

var age = repository.getAge(user); 

if(!string.IsNullOrEmpty(age)) 
{ 
    age = age.Trim(); 
} 

順便說一句,你可能會考慮把所有的數據在一個電話,而不是多次調用的名字,姓氏,年齡等