2

page_load..中のhiddenfieldsに値を割り当てようとしていますが、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 

以下のようなコードを変更すると、同じエラーがスローされます

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>

この問題を解決するために私を案内してください???

4

1 に答える 1

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>

この混乱から私を助けるためにあなたの貴重な時間を費やしてくれたムハンマド・アクタに感謝します..

于 2011-04-10T10:09:54.543 に答える