总结:
1.
<form id ="form1" runat="server"/>中用
<input type="submit" value="ddd" id="btn_id" name="btn_name"/>
这种方式进行提交时,会在服务段发现,ispostback的时候即回发过程中 ,Request.Form或者Request.QuereyString能获取到 所有客户端 有name属性(uniqueid)的html所提交的表单值。若客户端标签里没有name属性(uniqueiD),而只有id属性(clientId),服务端的Request.Form(或Request.QuereyString)是读不到这个元素所提交的表单提交的值。
通过得到的结论是:服务端Request.Form(或Request.QuereyString)是通过name来识别控件树中的html元素的。
2.
<input type="text" id="txt2_id" name="txt2_name" runat="server"/>
<asp:TextBox id="txt3_id" name="txt3_name" runat="server"/>
以上htmlweb控件和web服务器控件,说明了,服务器控件会自动生成name属性的
3.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" method="get" runat="server">
<div>
<input type="text" id="txt1_id" name="txt1_name"/>
<input type="text" id="txt2_id" name="txt2_name" runat="server"/>
<asp:TextBox id="txt3_id" name="txt3_name" runat="server"/>
<input type="submit" value="ddd" id="btn_id" name="btn_name"/>
</div>
</form>
</body>
</html>
如果我们去掉<form id="form1" method="get" runat="server">中[runat="server"],,然后我们再在服务段调试后发现,我们仍然可以获取到客户端id提交的值(我原以为获取不到)。事实上,如果这个时候表单里有web服务器控件的时候是会提示错误的。(但是若果有htmlweb控件不会提示该错误,原因还不知道为什么。但是如果该html控件有服务端事件触发的话,是不会执行的)。如果表单里不用web服务器控件,可以获取到客户端提交的值。但是获取的过程,却是在
(!ispostback)的过程中。按照那个ispostback为false条件的的理论,我们发现Request.Form或Request.QueryString中并没有__viestate开头的name了。
4.htmlweb控件也支持服务器端事件,不过方法是onserverclick.我在试验的过程中发现,多生了__doPostBack()这个js方法。