2010-02-11 65 views
1

何時使用GET和何時使用POST。我想隱藏我的查詢字符串上的代碼,如:在asp.net中進行GET和POST

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("~/Page1.aspx?mode=Create"); 
} 

我不想在查詢字符串中顯示創建單詞。我必須做的。以及如何實現Post/Redirect/Get模式 。如果可能的話,請發送給我代碼。 感謝您的閱讀。請幫助我太混淆

回答

2

GET旨在檢索資源而不作任何修改或產生任何副作用,並且POST用於向資源添加信息(但不創建新資源,這將是PUT)。這些只是指導方針,沒有在功能上強制執行;您可以使用POST請求來檢索資源,並且GET請求可能有副作用。

因此,您可以將模式信息放入POST請求的正文中;你也可以做一些簡單的,併爲其分配數值到你的模式,這樣你不得不

Response.Redirect("~/Page1.aspx?mode=2"); 

,只有服務器會知道,模式2是「創建」。

如果要防止用戶(很容易)能夠直接修改mode值,那麼POST正文將是比查詢字符串更好的解決方案。

1

GET HTTP方法將其變量保存在查詢字符串中。這只是它設計的方式。因此,如果您不想在查詢字符串中使用變量,並且想要將這些變量發送到服務器,那麼您將不得不使用GET以外的其他變量。

現在我猜你在問怎麼在請求之後但在重定向之前從查詢字符串中刪除變量?

請參閱http://www.west-wind.com/weblog/posts/132081.aspx此頁面列出了可顯示各種路徑和URL信息的ASP.Net屬性。

因此,例如,如果您在POST後進行GET操作,則假定您不應該真正擁有需要擺脫的查詢字符串變量。因此,

Response.Redirect(Request.RawUrl); 

可以做的伎倆。

但是Request.RawUrl如果有的話包含查詢字符串。因此,對於訪問沒有查詢字符串的路徑,請嘗試'Request.FilePath'或Request.CurrentExecutionFilePath與您的Response.Redirect在Postback處理結束時調用。