c# 4.0 -空引用异常-重定向时不捕获标签值

  • 本文关键字:标签 异常 引用 重定向 c#-4.0
  • 更新时间 :
  • 英文 :


我有一个名为UserInfo的类,它使用PrincipalContext从页面上经过身份验证的用户获取数据。此工作在页面加载时成功。我捕获用户的活动目录显示名,在页面加载时用标签表示。

问题:我想重定向到一个帖子页面。如果我不将用户重定向到另一个页面,则包含的代码可以工作,internet研究表明这是因为保留了状态。此外,即使我在调试模式下收到null错误,数据实际上还是像预期的那样存储在数据库中。但是,当我尝试将用户重定向到新页面时,可能会丢失标签的值并发生此错误。我不知道为什么重定向会导致页面再次重新加载,但是由于标签值丢失,我的错误变成了"用户代码未处理的空引用"。我已经尝试检查空值,并实例化类,正如几个帖子所指出的那样,但是当我执行调试时,错误显示在这一行:"lbRequesterName。Text = userinfo.DisplayName;"所以,很明显我做错了什么。代码页和下面的标记。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            UserInfo userinfo = new UserInfo();
            if (userinfo != null)
            {
                lbRequesterName.Text = userinfo.DisplayName;
            } 
        }
    //Submit data
        protected void btnSubmit_click(object sender, EventArgs e)
        {
            insertReg();
        }

        protected void insertReg()
        {
            DataTable dt = new DataTable();
            string strHidRecID = hidRecID.Value;
            if (strHidRecID == "") strHidRecID = "0";
            dt = dataAccessClass.ExecuteDataTable
            (
                "spRegInsert", dataAccessClass.dbName, new SqlParameter[2]
                {
                    new SqlParameter ("@vRequesterName",lbRequesterName.Text),
                    new SqlParameter ("@vRecID", strHidRecID)
                }
            );
            hidRecID.Value = dt.Rows[0]["recID"].ToString();
            Response.Redirect("RegPost.aspx?recID=" + dt.Rows[0]["recID"].ToString());
        }

//Markup
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<form id="frmInput" runat="server" action="">

<asp:Label runat="server" ID="lbRequesterName" Text="Name"></asp:Label>
<asp:Button ID="btnSubmit" runat="server" CssClass="btn" OnClick="btnSubmit_click" Text="Submit"/>
<asp:HiddenField runat="server" ID="hidRecID"/>

问题是我的webconfig文件没有在帖子页面上验证用户。我在web配置中添加了这一行,以允许经过身份验证的用户,其余的代码工作:

<location path="RegPost.aspx">
<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

最新更新