浏览器收集哪些值作为回发数据?
当要将页面发回服务器时,浏览器会收集每个控件的当前值并将其粘贴到一个字符串中。 然后,此回发数据将通过HTTP POST发送回服务器。
Q1 – 除了控件的Text属性和SelectedIndexchanged(因此除了用户输入数据),控件的其他属性/值是否被浏览器保存为回发数据?
Q2 – 对于GridView,哪些值是由浏览器在回发中保存的? 只有那些用户选择编辑的行?
字节
textarea
, select
, input
和button
字段的值将在post中返回。 每个值都是一个键值对,其中键是元素的name
属性。
我认为我已经获得了post中包含数据的所有元素:
-
textarea
:包括value
,即在textarea中键入的内容。 -
select
:包含所选选项的value
属性。 如果所选选项未指定value
属性,则使用该选项的文本。 -
input type="text"
:包含value
属性,即输入字段中输入的内容。 -
input type="password"
:包含value
属性,即输入字段中输入的内容。 -
input type="submit"
:如果该按钮用于发送表单,则包含value
属性,即按钮的文本。 -
input type="image"
:如果使用该按钮发送表单,则会在post中发送图像中鼠标点击的坐标。 通过将“.x”和“.y”添加到元素的名称来创建x和y坐标的名称。 -
input type="checkbox"
:如果选中该复选框,则包含value
属性。 如果元素没有指定value
属性,则使用值“on”。 -
input type="radio"
:value
属性包含在每个组的选定项目中。 (组是所有具有相同名称的单选按钮。) -
input type="file"
:包含所选文件的内容以及原始文件路径(或仅包含文件名,具体取决于浏览器和安全设置)。 -
input type="hidden"
:包含value
属性。 -
button
:如果该按钮用于发送表单,则包含innerText
属性,即删除了任何html标记的按钮文本。
TextBox
控件呈现为input type="text"
, input type="password"
或textarea
,具体取决于TextMode
属性。 DropDownList
控件呈现为select
元素。 Button
控件呈现为input type="submit"
。 CheckBox
控件呈现为input type="checkbox"
。 等等……检查渲染的html代码,看看实际呈现的html元素是什么。
如果GridView包含任何可编辑的表单字段,或者如果它导致回发(例如,通过在列表中导航),则GridView仅包含post中的任何数据。 在进行回发时,有一些信息存储在一对隐藏字段中,因此任何导致回发但不自行发送任何表单数据的控件(例如LinkButton)都包含有关导致回发的信息。
控件还可以将数据放入ViewState中,ViewState保存在表单中的隐藏字段中。 这也包含在post中,但它只是发送到浏览器并再次返回而不被浏览器更改。
我不是asp程序员,所以我不能给出确切的答案,但我建议你使用firefox与插件Live Http Headers和Firebug(控制台部分)。
通过此设置,您将能够看到浏览器向您的服务器发送的确切数据。
您可能也想使用ViewState解码器。 您可以在浏览器扩展中获取它们,并在网络上使用它们。 Scott Gu在此推荐一个: http : //weblogs.asp.net/scottgu/archive/2003/02/16/2495.aspx 。 ViewState应该告诉您需要知道的持久服务器属性。