簡體   English   中英

不要回發文本框

[英]Don't post back textbox

我有一個相當復雜的表單(實際上是用戶控件),其上有一個文本框控件,不需要回發。 有沒有辦法從帖子中刪除控件? 是的,此文本框是可編輯的。

更多信息:這是一張信用卡處理表格,因此“最終”提交將發布到另一個網站的頁面。 但是,在此之前,還有大量的服務器端處理。 我知道我可以將信用卡號碼文本框移動到另一個頁面 - 但這個要求來得很晚,我將不再需要重新做很多事情。

最簡單的方法是使用html輸入而不是ASP TextBox。 如果未在其上設置runat="server"則無法從代碼訪問這些內容。

或使用viewstate屬性( http://msdn.microsoft.com/en-us/library/system.web.ui.control.enableviewstate.aspx

因此,情況是您有一個在用戶瀏覽器中呈現的表單,其中一個操作指向另一個站點,您需要確保在提交表單時不會發送其中一個表單字段。

聽起來像你不能在那種情況下絕對確保沒有發布該值。 有許多不同的可能方法可以使用javascript(在提交前禁用輸入,清除值等)解決此問題,但如果關閉腳本,我認為你運氣不好。

但由於您可以准備將​​表單發送到其他服務器(更改窗體上的操作或使用PostBackUrl啟用按鈕),我猜您也可以將文本框上的Enabled屬性設置為false。 這意味着它不能再在最終頁面上進行編輯,以便發布到其他服務器。 或者您可以隱藏文本框a(因此它根本不會被取消)並將字段顯示為標簽或文字。

但即便如此,您仍然必須以某種方式確保秘密值不包含在表單的視圖狀態中。 如果您使用標簽或文字,它將是什么。 還有一個在最后一個回發中被禁用或隱藏的文本框。 通常,viewstate只是一個base64編碼的字符串,所以從那里找到信用卡號是很容易的。 您可以通過在設置表單以便發布到其他服務器之前關閉最后一篇文章中的相關控件(或甚至整頁)的viewstate來修復此問題。

如果您無法確定哪個是最后一次回發到您的服務器,那么我認為如果沒有更多重大更改,您將失去運氣。 很抱歉是個笨蛋。 使用Asp.Net網絡表單時,一些看似微不足道的事情很難實現。

也許你可以添加一個單獨的頁面,只用你需要發送到另一台服務器的數據來填充,並有一個“確認頁面”。 在該頁面中,您可以關閉viewstate,顯示匯總的所有數據(使用標簽和文字等),並且要發布的實際數據可以作為隱藏字段包含在表單中。 然后,當用戶“確認”時,該表單將發布到其他服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM