0
我有一個名爲UserInfo的類,該類使用PrincipalContext從頁面上的已認證用戶獲取數據。這項工作成功地在頁面加載。我捕獲用戶的活動目錄顯示名稱,在頁面加載標籤。空引用異常 - 重定向時不捕獲標籤值
問題:我想重定向到一個帖子頁面。如果我不將用戶重定向到不同的頁面,該代碼包含作品,Interent研究表明這是因爲州保留。而且,即使我在調試模式下收到空錯誤,數據實際上也會按照預期存儲在數據庫中。但是,當我嘗試將用戶重定向到新頁面時,推測標籤的值會丟失併發生此錯誤。我不知道爲什麼重定向會導致頁面重新加載,但因爲標籤值丟失,我的錯誤將成爲「用戶代碼未處理的空引用」。我試圖檢查一個空值,並實例化該類,因爲有幾個帖子已經指出,但是當我執行調試時,錯誤顯示在這一行上:「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"/>
您正在創建UserInfo'的'一個新的實例,當你寫'的UserInfo用戶信息=新的UserInfo( );',這意味着它不是null(因此它爲什麼進入'if(userinfo!= null)',然後嘗試從這個新創建的對象讀取'userinfo.DisplayName'。你剛剛創建的新實例 - 它只包含你從UserInfo構造函數賦值的任何值 – grovesNL
嗯,我不確定我是否理解 - 有沒有辦法寫這個,以便我能夠保留任何當我創建對象時,或者以某種方式分配屁股把它放在別的地方?對我來說,奇怪的是,當我添加response.redirect行時,這個錯誤只會觸發。不知道我明白爲什麼它會回到!回發行開始? – SeanFlynn