C# 错误对象引用未设置为对象的实例?

C# 错误对象引用未设置为对象的实例?,c#,entity-framework,C#,Entity Framework,我已经检查了我的代码,看看是否存在任何空值,但每个人都带来了一个值,但我找不到问题所在 public partial class UserDetail : ICSBaseUserControl { UserRepository userDao = new UserRepository(); User user; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBac

我已经检查了我的代码,看看是否存在任何空值,但每个人都带来了一个值,但我找不到问题所在

public partial class UserDetail : ICSBaseUserControl
{
    UserRepository userDao = new UserRepository();
    User user;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            long userID = Convert.ToInt64(Request[UrlParameters.UrlParameterName.UserID]);
            user = (userID > 0) ? userDao.GetUser(AppSession.Company.ID, userID) : new c365_EntityFramework.User();
            if (user.ID > 0)
            {
                txtFirstName.Text = user.Forename;
                txtSurname.Text = user.Surname;
                txtAddress.Text = user.Address1;
                txtEmail.Text = user.Email;
                txtUsername.Text = user.Username;

            }
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        bool result = userDao.UpdateUser(user.ID, txtFirstName.Text, txtEmail.Text, txtSurname.Text, txtAddress.Text, txtUsername.Text);
    }
}
编辑

这就是我修复它的方法,通过将
user
if(!IsPostBack)
加载出来:


我认为问题在于,
user
字段没有被实例化,因此在您单击按钮时,
null

您的
页面加载
仅在回发时填充
用户
。那么,当您按下按钮时,回发正在进行,此时您没有得到
用户
?此外,您还需要查看ASP.NET页面的生命周期


ASP.NET页面不会记住字段,您可能希望将
用户
置于会话状态,然后以这种方式使用它。

我认为问题在于字段
用户
没有被实例化,因此在单击按钮时将
为空

您的
页面加载
仅在回发时填充
用户
。那么,当您按下按钮时,回发正在进行,此时您没有得到
用户
?此外,您还需要查看ASP.NET页面的生命周期



ASP.NET页面不会记住字段,您可能希望将
用户
置于会话状态,然后以这种方式使用。

错误在哪一行?从何处获得此错误?bool result=userDao.UpdateUser(user.ID,txtflastname.Text,txtmail.Text,txtnamname.Text,txtdaddress.Text,txtextername.Text);我想这是因为userID传递为NULL。错误在哪一行?从哪里得到这个错误?bool result=userDao.UpdateUser(user.ID,txtFirstName.Text,txtmail.Text,txtnamname.Text,txtdAddress.Text,txtsername.Text);我认为这是因为userID传递为NULL。当你说“不”时,你做了什么尝试/做了什么?将其存储在会话中?回想起来?什么?在新问题或编辑中显示您的更新代码。它不正常。您的答案不正确。请稍后告诉我们好吗?现在我自己修复了它。当您说“不”时,您做了什么尝试/做了什么?它不起作用?将其存储在会话中?回想起来?什么?在新问题或编辑中显示您的更新代码。它工作不正常。您的答案不正确。您当时不介意启发我们吗?已排序,现在我自己修复了它
public partial class UserDetail : ICSBaseUserControl
{
    UserRepository userDao = new UserRepository();
    User user;
    protected void Page_Load(object sender, EventArgs e)
    {
        long userID = Convert.ToInt64(Request[UrlParameters.UrlParameterName.UserID]);
        user = (userID > 0) ? userDao.GetUser(AppSession.Company.ID, userID) : new c365_EntityFramework.User();
        if (!IsPostBack)
        {
            if (user.ID > 0) // Check for user ID
            {
                txtFirstName.Text = user.Forename;
                txtSurname.Text = user.Surname;
                txtAddress.Text = user.Address1;
                txtEmail.Text = user.Email;
                txtUsername.Text = user.Username;
            }
        }
    }