2010-04-22 15 views
0

當前表格爲here。它不完整,只有幾個選項可以工作。如何重置我的ASP.NET字段中的值?

選擇「圖像光盤」,然後選擇任何分辨率,然後點擊「添加到訂單」。訂單將記錄在服務器端,但在客戶端,我需要將產品下拉菜單重置爲「{select}」,以便用戶知道他們需要選擇其他產品。這與子選擇消失的想法是一致的。

我不知道我是應該使用ASP回發還是標準格式提交,並且當用戶向訂單添加項目時,大多數字段需要重置。

回答

2

我會用Response.Redirect(Request.RawUrl)方法從服務器端重置表單數據。

一點解釋:這是PRG design pattern

用於幫助避免某些重複 表單提交,並允許用戶代理 表現更直觀地 書籤和刷新按鈕。

此問題的解決方法:例如, 必要的數據可能存儲在Session中。這意味着我們會在第一次POST時獲取數據,將其存儲到存儲中,執行重定向並將其恢復。

+0

這絕對有道理。這種解決方案唯一的缺點是你不能選擇重置哪些字段。我可能希望「圖像」字段保持其價值。 – Giffyguy 2010-04-22 00:22:04

+0

也許使用Server.Transfer。保存往返瀏覽器的往返旅程。 – 2010-04-22 00:27:07

+0

@Jon P:不,我要編輯我的答案以添加解釋。 – Alex 2010-04-22 00:29:16

2

在窗體上的頁面加載事件,你需要的東西simalar添加到此:

if (IsPostBack) 
{ 
    //Proccess the order here 

    ProductOption.SelectedIndex = 0; 
} 

,讓您處理訂單,但隨後開始了訂單。

+0

完美的作品!謝謝! – Giffyguy 2010-04-22 00:12:34

2

最簡單的方法將是一個遞歸函數,在控制

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事件。 (這是假設您想重置多個控件或控件的小列表)。

相關問題