DetailView错误:未将对象引用设置为对象的实例

时间:2011-02-21 00:41:02

标签: asp.net vb.net detailsview directcast

我正在尝试更新用户信息并收到以下错误:

  

对象引用未设置为   对象的实例。描述:一个   未处理的异常发生在   当前网络的执行   请求。请查看堆栈跟踪   有关错误的更多信息   它起源于代码。

     

异常详细信息:   System.NullReferenceException:Object   引用未设置为的实例   对象

     

来源错误:

     

第20行:'无参数   构造函数第21行:第22行:
  user.Email =   DirectCast(e.NewValues(0),String)   第23行:user.Comment =   DirectCast(e.NewValues(1),String)   第24行:user.IsApproved =   CBool​​函数(e.NewValues(2))

.vb代码是:

Protected Sub UserInfo_ItemUpdating(ByVal sender As Object, ByVal e As DetailsViewUpdateEventArgs)
        'Need to handle the update manually because MembershipUser does not have a
        'parameterless constructor  

        user.Email = DirectCast(e.NewValues(0), String)
        user.Comment = DirectCast(e.NewValues(1), String)
        user.IsApproved = CBool(e.NewValues(2))

        Try
            ' Update user info:
            Membership.UpdateUser(user)

            ' Update user roles:
            UpdateUserRoles()

            UserUpdateMessage.Text = "Update Successful."

            e.Cancel = True
            UserInfo.ChangeMode(DetailsViewMode.[ReadOnly])
        Catch ex As Exception
            UserUpdateMessage.Text = "Update Failed: " + ex.Message

            e.Cancel = True
            UserInfo.ChangeMode(DetailsViewMode.[ReadOnly])
        End Try
    End Sub

以下是detailView的.aspx代码:

 Protected Sub UserInfo_ItemUpdating(ByVal sender As Object, ByVal e As DetailsViewUpdateEventArgs)
        'Need to handle the update manually because MembershipUser does not have a
        'parameterless constructor  

        user.Email = DirectCast(e.NewValues(0), String)
        user.Comment = DirectCast(e.NewValues(1), String)
        user.IsApproved = CBool(e.NewValues(2))

        Try
            ' Update user info:
            Membership.UpdateUser(user)

            ' Update user roles:
            UpdateUserRoles()

            UserUpdateMessage.Text = "Update Successful."

            e.Cancel = True
            UserInfo.ChangeMode(DetailsViewMode.[ReadOnly])
        Catch ex As Exception
            UserUpdateMessage.Text = "Update Failed: " + ex.Message

            e.Cancel = True
            UserInfo.ChangeMode(DetailsViewMode.[ReadOnly])
        End Try
    End Sub

我知道如何对此进行排序吗?

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

我的第一个猜测是,在没有看到更多代码的情况下,您的user变量为空。你在渲染页面时设置了吗?我假设你上面的代码是一个回发版,所以user丢失了它的价值。