none
System.NullReferenceException: 未将对象引用设置到对象的实例 RRS feed

  • 问题

  • 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

    源错误:

    行 75:         u.Address = this.tbAddress.Text;
    行 76:         u.Phone = this.tbPhone.Text;
    行 77:         u.userRole.Id = this.RoleDropDownlist.SelectedIndex;
    行 78:         um.UsersInsert(u);
    行 79:     }

     

    DAL:

    #region 插入用户
            public int UsersInsert(Users user)
            {
                int u = 0;
                string sql = "insert into Users(LoginId,LoginPwd,Name,Address,Phone,Mail)values(@LoginId,@LoginPwd,@Name,@Address,@Phone,@Mail)";
                using (SqlConnection con = new SqlConnection(MySQL))
                {

                    SqlCommand comm = new SqlCommand(sql, con);
                    comm.Parameters.Add("@LoginId", SqlDbType.NVarChar).Value = user.LoginId;
                    comm.Parameters.Add("@LoginPwd", SqlDbType.NVarChar).Value = user.LoginPwd;
                    comm.Parameters.Add("@Name", SqlDbType.NVarChar).Value = user.Name;
                    comm.Parameters.Add("@Mail", SqlDbType.NVarChar).Value = user.Mail;
                    comm.Parameters.Add("@Address", SqlDbType.NVarChar).Value = user.Address;
                    comm.Parameters.Add("@Phone", SqlDbType.NVarChar).Value = user.Phone;
                    con.Open();
                    u = comm.ExecuteNonQuery();
                }
                return u;
            }
            #endregion

    BLL:

    #region 插入用户
            public bool UsersInsert(Users user)
            {
                int cout = u.UsersInsert(user);
                if (cout > 0)
                {

                    return true; ;
                }
                else {

                    return false; ;
                }
            }
            #endregion

     

    WEB

    Users u = new Users();
        UserRole ur = new UserRole();
        UserManager um = new UserManager();
        UserRolesManager urm = new UserRolesManager();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack){

                InitialSetup();
            }
           
        }
        #region 初始化设置
        private void InitialSetup()
        {
            DynamicDataSourceRoleDropDownlist();
            this.RoleDropDownlist.Items.Insert(0, new ListItem("请选择角色"));
            this.btuQueren.Attributes.Add("onClick", "return confirm('确认增加用户')");
                }
        #endregion

    #region 动态通过数据源控件绑定数据至RoleDropDownlist中
        private void DynamicDataSourceRoleDropDownlist()
        {
            RoleDropDownlist.DataSource =urm.GetAllUserRole() ;
            RoleDropDownlist.DataTextField = "Name";
            RoleDropDownlist.DataValueField = "Id";
            RoleDropDownlist.DataBind();
        }
        #endregion   


        #region 执行增加用户
        protected void btuQueren_Click(object sender, EventArgs e)
        {
            AddUser();
            Quekong();
        }
        #endregion


        #region 增加用户
        private void AddUser() {

            u.LoginId = this.tbUserId.Text;
            u.LoginPwd = this.tbOkPwd.Text;
            u.Name = this.tbName.Text;
            u.Mail = this.tbEmail.Text;
            u.Address = this.tbAddress.Text;
            u.Phone = this.tbPhone.Text;
            u.userRole.Id = this.RoleDropDownlist.SelectedIndex;
            um.UsersInsert(u);
        }
        #endregion

    2011年9月26日 16:25

答案

全部回复

  • 看起來是你的RoleDropDownlist沒有任何items,嘗試檢查看看是否在讀取this.RoleDropDownlist.SelectedIndex前,是否有設定RoleDropDownlist的Items來避免這個NullReference的Exception。

    另外,請問你的RoleDropDownlist是動態產生的嗎?

     

     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月27日 1:32
  • 我想错误可能跟SelectedIndex没有什么关系,他的默认值是0,就是list中的第一个, 我觉得应该是u.userRole的问题,你应该先new一个userRole出来,然后在设置Id属性


    Alan Chen[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月28日 9:48
    版主