您的位置:首页 > 编程语言 > ASP

Asp.Net : runat="server" 的form 提交到其他页面的方法

2011-06-17 16:06 676 查看

在ASP转换到asp.net的问题

在一个普通的asp列表中,可以使用X1.Pager带来的便利。
由于X1.Pager需要一个runat=server的Form,我们可以采用几种方法改造页面。

方法1、直接修改form的运行位置
如果将原有的form改为runat=server,如果原来的form中仅有属性name=formName 注意加上id=formName,这样页面中的元素标识同原来一样,不必改动太多。

如果不加这个属性,runat=server的form在形成页面form后,就会是这样的
<form method="post" action="List.aspx" >
这样,就会出现javascript脚本可能找不到元素的问题。

如果原有的页面有这样的代码:

document.frmThis.action = "Other.aspx?dataid=<%=ColumnID%>&troop=1";
document.frmThis.submit();

将form中的input提交到其他页面Other.aspx,在下一个页面Other.aspx会产生,ViewState非法的异常。这是因为runat=server的form加了一个隐含的__VIEWSTATE,用于视图状态(ViewState)机制的状态值,这个状态值经过一定的编码,同服务器端的变量进行对应。
由于下一个页面Other.aspx没有对应的变量,所以就产生异常。

所以如果有这样的代码,就要另外增加一个普通的form,进行数据的传递
<form method="post" >

在脚本中,增加一个将主form中的值传递到frmThis的方法
postString = document.all.Abc.value ;

document.frmThis.chkFileId.value = postString ;
document.frmThis.action = "TroopVol.aspx?dataid=<%=ColumnID%>&troop=1";
document.frmThis.submit();

如果提交的input比较多,这样做就会非常痛苦。所以,如果有document.frmThis.submit();这类的代码,请使用方法2。

方法2、为PageBar增加一个单独的runat=Server的from
这样,原有的form就不必改动了,仍然继续使用,那些javascript中的submit也会很正常使用,不必改动。
这样代码示例:
<form method="post" runat="server">
<cc1:pagebar runat="server"></cc1:pagebar>
</form>
注意的问题:
新增form不要同原有的form嵌套或重叠,可以将主form在PageBar之前结束。
由于form会产生一定的页面空白,所以,可以放在一些比较隐含的位置,如<table>和<tr>之间

方法3、彻底解决asp表单的提交。
完全将asp方式的表单变为asp.net的表单。

将document.frmThis.submit();方式的提交,转变为服务器端事件的方式,在服务器端提交到逻辑层,或者重定向到其他页面Other.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐