这个问题的原因其实并不是asp.net 运行机制的原因,而是因为在html中本身就不允许form标签嵌套使用,我试过document.getelementbyid("search") 语句但并不能得到search表单对象,因为在浏览器解析html是时候会忽略form标签中又嵌套的form标签。
解决方法:通过动态改变最外层form标签的action属性来达到form嵌套使用的效果,呵呵,算是一种曲线解决方法吧。
修改上面的代码如下:
<form id="form1" runat="server"> //这个是asp.net页面最外层form标签
//搜索表单没有runat="server" 运行在客户端
<form id="search" action="search.aspx"> //搜索表单
<input type="text" name="searchtext" id="searchtext" />
<input name="subsearch" type="button" οnclick="javascript:document.forms[0].action='search.aspx';document.forms[0].submit()" />
</form>
//投票表单
<form id="vote" action="vote.aspx"> //投票表单
<input type="text" name="votetext" id="votetext" />
<input name="subvote" type="button" οnclick="javascript:document.forms[0].action='vote.aspx';document.forms[0].submit()" />
</form>
</form>
红色部门为注要代码。
如有写的不对的地方欢迎大家指正。