2016-09-24 49 views
1

是否有上用回發送檢索數據之間的差值(1)NameValueCollection型和(2)<ControlID>.Text(或SelectedValue或其他)的Request.Form?請看下面的代碼隱藏文件:檢索數據:對的Request.Form TextBox.Text

protected void Page_Load(...) { 
    if (IsPostBack) { 
     Validate(); 
     if (IsValid) { 
      // APPROACH (1): Retrieve POST data from the Request.Form object: 
      NameValueCollection post = Request.Form; 
      string username = post["username"]; 
      // logic continues... 
     } 
    } 
} 

與以下:

protected void Page_Load(...) { 
    if (IsPostBack) { 
     Validate(); 
     if (IsValid) { 
      // APPROACH (2): Retrieve Control text directly: 
      string username = UsernameTextBox.Text; 
      // logic continues... 
     } 
    } 
} 

是否有這兩種方法有什麼區別?任何理由贊成一個在另一個(在某些情況下也許)?謝謝

回答

1

他們基本上是一樣的。我們通常使用第二種方法。

後者是強類型的,如果控件不存在,它會引發編譯時錯誤。

我唯一一次使用的NameValueCollection是檢索這是在客戶端使用Javascript添加動態控制,並在窗體回發到服務器。