首页 新闻 会员 周边

谁能解释下这段代码为何会是这个结果?

0
悬赏园豆:10 [已解决问题] 解决于 2012-10-17 14:42

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
     <input type="text" name="TextBox1" />
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

 

  protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write(Request["TextBox1"].Count() + ".." + Request.Form.GetValues("TextBox1").Count());
    }

 

 

为什么前面的值一直在++,TEXTBOX中的值也变成,,, 为什么会这样?>

happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2012-10-10 22:47
< >
分享
最佳答案
0

这种情况正常。

点击 button 按钮时,相当form提交,form中有 两个name为TextBox1的文本框,两个值都是空值,由于key相同,会用,分开于是Request["TextBox1"]=",";

Request["TextBox1"].Count()是  值的字符个数,Count()是扩展方法。

TEXTBOX中的值也变成,,,,是由于 Request 获取TextBox1的值是“,”,.net 由于viewstate或者其他内部机制维持服务器控件的值状态,而给服务器控件赋的值。

收获园豆:10
Qlin | 老鸟四级 |园豆:2403 | 2012-10-11 10:02

现在只能解释一个问题:1.所有FORM提交的元素都是以NAME来获取的,它们的值是以,分隔.我还有个疑问,为什么TextBox1的值会,,,,增加?.net自动给控件赋值那不变成.net的BUG了?

happydaily | 园豆:301 (菜鸟二级) | 2012-10-11 10:56

@happydaily: 

维持视图状态怎么会是bug呢,难道你希望 点击按钮了,你的数据被清空?

Qlin | 园豆:2403 (老鸟四级) | 2012-10-11 11:23

@Qlin: 你把Button1_Click中的代码清空,然后你再点按钮,你再看看为何textbox的值还会有变化?

happydaily | 园豆:301 (菜鸟二级) | 2012-10-15 08:37

@happydaily: 

肯定有变化,跟Button1_Click中的Response 输出没关系,你又没有显示赋值,就算是 Button1_Click方法删除了,只要回发了,就会有变化。

大致过程:提交到服务器端,在初始化页面时,通过Request获取值,初始化服务器控制的值,再生成html代码,再发回给浏览器。

Qlin | 园豆:2403 (老鸟四级) | 2012-10-15 08:53
其他回答(2)
0

Request["TextBox1"].Count(),这输出的是个数吗?

jason2013 | 园豆:1998 (小虾三级) | 2012-10-11 08:36

是的,试下就看到神奇的效果.

支持(0) 反对(0) happydaily | 园豆:301 (菜鸟二级) | 2012-10-11 09:28
0

你的3个控件name属性都是TextBox1  你设置<input type="text" name="t1" />再试试

chenping2008 | 园豆:9836 (大侠五级) | 2012-10-11 09:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册