你调用的对象是空的

时间:2011-04-10 04:10:33

标签: asp.net nullreferenceexception asp.net-controls hiddenfield

我正在尝试将值分配给hiddenfields duting page_load ..但它抛出System.NullReferenceException ..这是我在page_load事件中使用的代码..

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
 Handles Me.Load

    Dim hLogInfo As HiddenField = DirectCast(FindControl("HLogInfo"), HiddenField)
    Dim hUName As HiddenField = DirectCast(FindControl("HUName"), HiddenField)

    If Not Page.User.Identity.IsAuthenticated Then
        Response.Write("not logged in")
        hLogInfo.Value = "No"
        hUName.Value = "None"
    Else
        Dim currentUser As MembershipUser = Membership.GetUser()
        hUName.Value = currentUser.UserName
        Response.Write(currentUser.UserName)
        hLogInfo.Value = "Yes"
    End If

End Sub

以下是错误详情......

 Server Error in '/colorshelf.com' Application.
 Object reference not set to an instance of an object.
 Description: An unhandled exception occurred during the execution of the 
 current web request. Please review the stack trace for more information about 
 the error and where it originated in the code.

 Exception Details: System.NullReferenceException: Object reference not set to 
 an instance of an object.

 Source Error:

 Line 41:         Else
 Line 42:             Dim currentUser As MembershipUser = Membership.GetUser()
 Line 43:             hUName.Value = currentUser.UserName
 Line 44:             Response.Write(currentUser.UserName)
 Line 45:             hLogInfo.Value = "Yes"


 Source File: G:\Websites\colorshelf.com\html\*******.***.vb    Line: 43

 Stack Trace:

 [NullReferenceException:Object reference not set to an instance of an object.]
 ****_****.Page_Load(Object sender, EventArgs e) in 
 G:\Websites\colorshelf.com\html\******.***.vb:43
 System.Web.UI.Control.OnLoad(EventArgs e) +91
 System.Web.UI.Control.LoadRecursive() +74
 System.Web.UI.Control.LoadRecursive() +146
 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, 
 Boolean includeStagesAfterAsyncPoint) +2207


 Version Information: Microsoft .NET Framework Version:4.0.30319; 
 ASP.NET Version:4.0.30319.1 

修改像bewlow这样的代码也会引发同样的错误

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load

    If Not Page.User.Identity.IsAuthenticated Then
        Response.Write("not logged in")
        HLogInfo.Value = "No"
        HUName.Value = "None"
    Else
        Dim currentUser As MembershipUser = Membership.GetUser()
        HUName.Value = currentUser.UserName
        Response.Write(currentUser.UserName)
        HLogInfo.Value = "Yes"
    End If

End Sub

以下是页面源..

<%@  Master Language="VB" MasterPageFile="../**.master" AutoEventWireup="false" CodeFile="***.master.vb"
Inherits="***_****" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server">
 <asp:ContentPlaceHolder ID="HeadContentSubMaster" runat="server">
    <script type="text/javascript">

    </script>
 </asp:ContentPlaceHolder>
 </asp:Content>
 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
 <div style="width: 100%; float: left;">
    <div style="width: 16%; float: left;" align="center">
        <div style="color: #FFFFFF; font-weight: bold; font-size: 14px; width: 100%; padding-top: 37px;"
            align="center">
            Colorshelf list
            <br />
            <hr width="70%" />
        </div>
        <table border="0" style="border-collapse: separate; padding-top: 7px;">
        </table>
    </div>
</div>
<div style="width: 56%; float: left; margin-left: 20px;">
    <asp:ContentPlaceHolder ID="BodyContent" runat="server">
    </asp:ContentPlaceHolder>
</div>
<div style="width: 22%; float: right;">
    <a href="http://www.lalsofttech.com/MRanking/Default.aspx" style="border-style: none">
        <img src="../Images/MRA_Banner.png" style="border-style: none; width: 92%; padding-left: 30px;
            padding-top: 50px;" /></a>
</div>
</div>
<div style="width: 100%; float: left;">
    <div style="width: 80%; float: left;">
        <asp:ContentPlaceHolder ID="ContentFooter" runat="server">
            <asp:HiddenField ID="HLogInfo" runat="server" Value="" />
            <asp:HiddenField ID="HUName" runat="server" Value="" />
        </asp:ContentPlaceHolder>
    </div>
</div>
<div class="clear">
    <br />
    <br />
</div>

请指导我解决这个问题???

1 个答案:

答案 0 :(得分:2)

这么简单,但我做得更糟.. 看看我放置了隐藏字段的位置

<div style="width: 100%; float: left;">
<div style="width: 80%; float: left;">
    <asp:ContentPlaceHolder ID="ContentFooter" runat="server">
        <asp:HiddenField ID="HLogInfo" runat="server" Value="" />
        <asp:HiddenField ID="HUName" runat="server" Value="" />
    </asp:ContentPlaceHolder>
</div>
</div>

我应该将这些隐藏字段放在ContentPlaceHolder之外,因为该部分用于子页面。

在纠正这样的代码后......一切正常......

<div style="width: 100%; float: left;">
<div style="width: 80%; float: left;">
<asp:HiddenField ID="HLogInfo" runat="server" Value="" />
<asp:HiddenField ID="HUName" runat="server" Value="" />
    <asp:ContentPlaceHolder ID="ContentFooter" runat="server">

    </asp:ContentPlaceHolder>
</div>
</div>

感谢Muhammad Akhta花费宝贵的时间帮助我解决这个问题..

相关问题