asp.net 多form
asp.net 1.1的时候,多表单嵌套是出错的(好像)
<form id=xx runat=server>
<form id=yy></form>
</form>
asp.net 2.0 倒是可以,但是提交没反应。
一种方案是并列form,不嵌套。但是如果是用户控件中一定要有form,并提交到不同的页面,这个方案就不行了。
例如嵌入一个投票,这时用第二个方案,javascript处理。 但是要注意恢复原来form的action等属性,以保持原来页面不受影响。
<form id="form1" runat="server">
<script language=javascript>
function dopoll(x)
{
var oldaction = document.form1.action;
var oldmethod = document.form1.method;
var oldtarget = document.form1.target;
document.all["whichpoll"].value = x;
document.form1.action = "webform2.aspx";
document.form1.method = "get";
document.form1.target = "_blank";
document.form1.submit();
document.form1.action = oldaction;
document.form1.method = oldmethod;
document.form1.target = oldtarget;
}
</script>
<input type=hidden name=pollsysno2 value=2 />
<input type=hidden name=pollsysno3 value=3 />
<input type=hidden name=whichpoll />
<input type=button name=poll2 value=22222 onclick=dopoll(2) />
<input type=button name=poll3 value=33333 onclick=dopoll(3) />
<br />
<br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />当然要作成控件,还要改进,例如form1不能写死吧。
弹出窗口要定制,没有工具条什么的,那javascript再加2句。
string javascript0 = @"
<input type='hidden' name='PollSysNo'>
<input type='hidden' name='PollItemSysNo'>
<input type='hidden' name='PollType'>
<script language=javascript>
function DoPoll(whichPoll, pollType)
{
var oldaction = document.@ParentFormName.action;
var oldmethod = document.@ParentFormName.method;
var oldtarget = document.@ParentFormName.target;
document.all[""PollSysNo""].value = whichPoll;
document.all[""PollType""].value = pollType;
document.@ParentFormName.action = ""../Include/PollResult.aspx"";
document.@ParentFormName.method = ""post"";
window.open('','mywin','height=420,width=540,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes');
document.@ParentFormName.target = ""mywin"";
document.@ParentFormName.submit();
document.@ParentFormName.action = oldaction;
document.@ParentFormName.method = oldmethod;
document.@ParentFormName.target = oldtarget;
}
</script>最后,提交到其他页面去了,那再加一句 EnableViewStateMac="false" 在结果页面。否则错误很明显。

浙公网安备 33010602011771号