當前表格爲here。它不完整,只有幾個選項可以工作。如何重置我的ASP.NET字段中的值?
選擇「圖像光盤」,然後選擇任何分辨率,然後點擊「添加到訂單」。訂單將記錄在服務器端,但在客戶端,我需要將產品下拉菜單重置爲「{select}」,以便用戶知道他們需要選擇其他產品。這與子選擇消失的想法是一致的。
我不知道我是應該使用ASP回發還是標準格式提交,並且當用戶向訂單添加項目時,大多數字段需要重置。
當前表格爲here。它不完整,只有幾個選項可以工作。如何重置我的ASP.NET字段中的值?
選擇「圖像光盤」,然後選擇任何分辨率,然後點擊「添加到訂單」。訂單將記錄在服務器端,但在客戶端,我需要將產品下拉菜單重置爲「{select}」,以便用戶知道他們需要選擇其他產品。這與子選擇消失的想法是一致的。
我不知道我是應該使用ASP回發還是標準格式提交,並且當用戶向訂單添加項目時,大多數字段需要重置。
我會用Response.Redirect(Request.RawUrl)
方法從服務器端重置表單數據。
一點解釋:這是PRG design pattern
用於幫助避免某些重複 表單提交,並允許用戶代理 表現更直觀地 書籤和刷新按鈕。
此問題的解決方法:例如, 必要的數據可能存儲在Session
中。這意味着我們會在第一次POST時獲取數據,將其存儲到存儲中,執行重定向並將其恢復。
在窗體上的頁面加載事件,你需要的東西simalar添加到此:
if (IsPostBack)
{
//Proccess the order here
ProductOption.SelectedIndex = 0;
}
,讓您處理訂單,但隨後開始了訂單。
完美的作品!謝謝! – Giffyguy 2010-04-22 00:12:34
最簡單的方法將是一個遞歸函數,在控制
private void ResetControls(Control control)
{
if (control == null)
return;
var textbox = control As TextBox;
if (textbox != null)
textbox.Text = string.Empty;
var dropdownlist = control as DropDownList;
if (dropdownlist != null)
dropdownlist.SelectedIndex = 0; // or -1
...
foreach(var childControl in controlControls)
ResetControls(childControl);
}
類型叉你會通過傳遞this
這個調用這個函數在您的Load事件。 (這是假設您想重置多個控件或控件的小列表)。
這絕對有道理。這種解決方案唯一的缺點是你不能選擇重置哪些字段。我可能希望「圖像」字段保持其價值。 – Giffyguy 2010-04-22 00:22:04
也許使用Server.Transfer。保存往返瀏覽器的往返旅程。 – 2010-04-22 00:27:07
@Jon P:不,我要編輯我的答案以添加解釋。 – Alex 2010-04-22 00:29:16