2014-01-22 54 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(); 
} 

顺便说一句,你可能会考虑把所有的数据在一个电话,而不是多次调用的名字,姓氏,年龄等