我有一个下拉列表,其年龄范围为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 :(得分:0)
我的猜测是例外,因为年龄为null并且你正在尝试进行Trim操作。
var age = repository.getAge(user).Trim();
可能你可以做到这一点。
var age = repository.getAge(user);
if(!string.IsNullOrEmpty(age))
{
age = age.Trim();
}
顺便说一句,您可能会考虑将所有数据都放在一个调用中,而不是多次调用firstname,lastname,age等。
答案 1 :(得分: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;
}
}