<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中的值也变成,,, 为什么会这样?>
这种情况正常。
点击 button 按钮时,相当form提交,form中有 两个name为TextBox1的文本框,两个值都是空值,由于key相同,会用,分开于是Request["TextBox1"]=",";
Request["TextBox1"].Count()是 值的字符个数,Count()是扩展方法。
TEXTBOX中的值也变成,,,,是由于 Request 获取TextBox1的值是“,”,.net 由于viewstate或者其他内部机制维持服务器控件的值状态,而给服务器控件赋的值。
现在只能解释一个问题:1.所有FORM提交的元素都是以NAME来获取的,它们的值是以,分隔.我还有个疑问,为什么TextBox1的值会,,,,增加?.net自动给控件赋值那不变成.net的BUG了?
@happydaily:
维持视图状态怎么会是bug呢,难道你希望 点击按钮了,你的数据被清空?
@Qlin: 你把Button1_Click中的代码清空,然后你再点按钮,你再看看为何textbox的值还会有变化?
@happydaily:
肯定有变化,跟Button1_Click中的Response 输出没关系,你又没有显示赋值,就算是 Button1_Click方法删除了,只要回发了,就会有变化。
大致过程:提交到服务器端,在初始化页面时,通过Request获取值,初始化服务器控制的值,再生成html代码,再发回给浏览器。
Request["TextBox1"].Count(),这输出的是个数吗?
是的,试下就看到神奇的效果.
你的3个控件name属性都是TextBox1 你设置<input type="text" name="t1" />再试试