人是有惰性的

想到哪儿写到哪儿
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">
        
&nbsp;
        
<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" 在结果页面。否则错误很明显。

posted on 2007-07-22 21:49  guanfei  阅读(912)  评论(3)    收藏  举报