在回发上访问控制文本的首选方法

时间:2011-03-02 18:21:39

标签: c# asp.net postback user-input

我正在建立一个网站,在整个网站中,我与回发用户输入的方式不太一致。例如,假设在一个按钮事件中,它从文本框中检索两个字符串并将它们加在一起并在标签中输出字符串sum:

protected void btnCalculate_Click(object sender, EventArgs e)
{
    string text1 = textBox1.Text;    //one way
    string text2 = Request["textBox2"];    //the other way
    lblSum.Text = text1+text2;
}

我想如果数据已经发布到新页面,你会想要使用Request [“”],但对于这种情况,是一种优先于另一种方式的方式,为什么?

3 个答案:

答案 0 :(得分:3)

经典ASP 3.0随着ASP.NET及其自发帖页面的出现,标准方式是你的//单向选项,即Control.Text,Request []是多余的,因为页面回发给自己。

答案 1 :(得分:2)

如果回发到同一页面:

textBox1.Text;

为了访问另一个页面上的控件,有一些技术,Session,Context,PreviousPage。 How to Pass Values Between ASP.NET Pages

要将字符串添加到一起,请使用

String.Concat(text1, text2);

String.Format("{0}{1}",text1, text2);

答案 2 :(得分:1)

使用Request[]类型会破坏webforms体系结构的整个目的。在纯粹实用的层面上,这也不适用于复杂的表单,因为控制器的ID在服务器上不能保证与客户端相同。

对于任何不仅仅包含文本的控件,您将访问非结构化数据,而不是访问其绑定的控件的更新属性。

你真的不应该在ASP.NET中从一个页面发布到另一个页面 - 它打破了体系结构,并且在大多数情况下你没有很多理由想要这样做。