在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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2009-06-17 C# 自动化模型编辑Word
2009-06-17 C# 读写Word :提示将 Word 用作自动化服务器时提示保存 Normal.dot (独占Normal.dot,没办法读写的解决方案)