在PostBack上检索数据:Request.Form与TextBox.Text

时间:2016-09-24 22:38:08

标签: asp.net

使用类型为Request.Form的{​​1} NameValueCollection和(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...
        }
    }
}

这两种方法有什么区别吗?任何理由支持一个人(在某些情况下可能)?谢谢

1 个答案:

答案 0 :(得分:1)

它们基本相同。我们通常使用第二种方法。

后者是强类型,如果控件不存在,则抛出编译时错误。

只有当我使用 NameValueCollection 时,才能检索在客户端<动态添加动态 的控件< strong> 使用Javascript ,表单将发布回服务器。