2012-10-24 35 views
1

我做了一個插入數據到數據庫的webform。當單擊插入按鈕時,將插入用於插入數據的代碼,並且在成功插入數據後,它會重定向到其他頁面,其中顯示「數據插入成功」。 它是這樣的...在ASP.NET/C中插入數據後重定向頁面#

INSERT PAGE .....

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
     String A = "InsertSuccess"; 

      Response.Redirect("OtherPage.aspx?&lnk=" + A); 
    } 

其他網頁....

String link = null; 
      link = Request.QueryString["lnk"]; 
      if (link == "InsertSuccess") 
      { 
       txtLabel.Text = "Record inserted succesfully!"; 

      } 

我的問題是,當我訪問其他網頁連我沒有使用插入頁面..我得到相同的結果。讓我說我輸入..http:// localhost:8672/OtherPage.aspx? & lnk =地址欄中的InsertSuccess ..我得到「記錄插入成功!」標籤。我希望其他頁面不顯示「成功插入記錄!」當我實際上沒有插入某些東西,而只是通過瀏覽器的地址欄訪問它時發出消息。

+3

爲什麼你甚至想重定向到另一個頁面?如果您只想顯示狀態消息,只需將標籤添加到您的窗體與屬性可見性設置爲false。插入數據後,您設置標籤文本,使其可見,並使您的插入形式不可見。通過這種方式,您可以爲一條小消息保存整個頁面。 – mboldt

+0

非常實際的建議感謝您,但我真正的目的是如何確保頁面通過網站重定向加載,而不是直接訪問鏈接。 :)有用的建議:) –

回答

2

您可以使用Session變量來存儲更新的狀態,然後檢查它是否可用otherpage.aspx,更新文本框並重置它。

插入頁面

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
      Session["status"]="InsertSuccess"; 


      Response.Redirect("OtherPage.aspx"); 
    } 
} 

其他網頁

if (Session["status"]!=null) 
     { 
      txtLabel.Text = "Record inserted succesfully!"; 
      Session["status"]=null; 

     } 
+0

謝謝!它真的幫了我很多! :) –

1

那麼什麼,我看你不希望只是通過鍵入「HTTP得到的消息://本地主機:8672/OtherPage.aspx & lnk = InsertSuccess「,那麼我建議你不要傳遞帶有標誌的字符串,而應該傳遞記錄ID,然後在你的其他頁面上檢查你的記錄ID是否真的存在於你的表上。

爲此,我希望您使用ID作爲GUID類型。

你有這樣的事情:

的 「http://本地主機:8672/OtherPage.aspx & LNK = BBB5259E-F5A3-4271-ABC8-D95A00BE9770」

否則就太容易記住一個int ID。

+0

當您使用Windows Azure,可以有多個實例並且需要將變量保存在一個持久存儲上時,這種方法非常有用,但對於我所看到的會話變量來說,這已經足夠了。 –

+0

oic 即時通訊仍然是新的asp.net 也許我會一直在努力:) 謝謝 –

0

你應該改變你的querystring。

Response.Redirect("OtherPage.aspx?&lnk=" + A); 

應該是:

Response.Redirect("OtherPage.aspx?lnk=" + A); 

當未編碼的 '&' 標誌被視爲一個參數隔板。

Response.Redirect("OtherPage.aspx?lnk=" + A + "&secondParam=someValue"); 

按照要求通過評論:
看到這個SO post
MSDN HttpServerUtility.UrlEncode
.NET Slave - Working with query strings

String.IsNullOrWhiteSpace()有時可能是得心應手。

+0

感謝這篇文章。實際上,我只是一個非常小的想法處理querystrings。我只是從其他項目複製它。這非常有幫助!我可以問一些關於這方面工作的鏈接嗎? 我真的是全新的asp.net 謝謝:) –

+0

@EmmanuelGabion在答案中增加了幾個鏈接。 – scheien

0
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true) 
    { 
     HttpContext.Current.Items["A"]= "Inserted Successfully"; 

      Server.Transfer("OtherPage.aspx); 
    } 



string ContextData =(string) HttpContext.Current.Items["A"]; 

if(!string.Empty(ContextData)) 
{ 
Label1.Text = ContextData; 
} 
0

假設您解決您的網址,並刪除「&」後的「?」 ..你必須刪除「&」

你有沒有想過瀏覽器緩存?有時緩存可以做到這一點,並且由於緩存設置的原因,我一直在努力解決類似於你的問題。

+0

我還是全新的asp.net。這似乎很有趣!瀏覽器緩存......我想在未來我會努力做到這一點。 謝謝 –

相關問題