在使用(1)类型为NameValueCollection
的Request.Form
和(2)类型为<ControlID>.Text
(或SelectedValue
或其他)的回发中检索数据之间是否存在差异?考虑下面的代码隐藏文件:
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...
}
}
}
vs。如下:
protected void Page_Load(...) {
if (IsPostBack) {
Validate();
if (IsValid) {
// APPROACH (2): Retrieve Control text directly:
string username = UsernameTextBox.Text;
// logic continues...
}
}
}
这两种方法有什么区别吗?有什么理由支持其中一个而不是另一个(也许在某些情况下)?谢谢你
基本相同。我们通常使用第二种方法。
后者是强类型,如果控件不存在,则会抛出编译时错误。
唯一一次我使用NameValueCollection是检索一个控件,它是添加动态在客户端使用Javascript,表单被张贴回服务器。