开心就好的代码人生

用伪代码书写我的人生

   博客堂 :: 首页 :: 联系 :: RSS 2.0 ::
随笔 - 386, 评论 - 10744, 引用 - 242

导航

关于

贴子以"现状"提供且没有任何担保也没有授予任何权利。
在TechED 2006上的演讲




开心就好

请见谅,我无法公布我的Windows Live ID,而且工作很忙,没有多余时间进行闲聊。

标签

每月存档

最新留言

广告

 

在ASP.NET 1.x的时候,很多朋友可能需要进行跨页提交的处理,也就是从页面A能够提交到页面B,甚至不同的Control其目标处理页面也各不相同。尤其是从ASP/JSP/PHP转过来的开发人员,可能更有这种需求。但很不幸,在ASP.NET 1.x的时候,处理这种跨页请求是十分丑陋的,需要非常多的“技巧化”处理。

在ASP.NET 2.0的时候,对于跨页提交已经有了非常合理的解决方案,以下就是一个示例。

SourcePage.aspx: 请注意Button1的PostBackUrl属性设置

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> public string YourName { get { return this.TextBox1.Text; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="请输入您的姓名" Width="183px"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="提交" PostBackUrl="~/TargetPage.aspx" /></div> </form> </body> </html> TargetPage.aspx:请注意PreviousPageType的属性设置
<%@ Page Language="C#" %>
<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { this.Label1.Text = PreviousPage.YourName; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" ></asp:Label> </div> </form> </body> </html>
OK,就通过这么简单的两个属性设置,就可以非常方便的得到跨页提交的特性。当然,您也可以根据您自己的需求,比如每个Control需要提交到不同的页面来进行更加复杂的设置。
 

打印 | 张贴于 2005-08-03 13:00:00 | Tag:C#编程

留言反馈

#回复: ASP.NET 2.0 Tips(1):跨页提交 编辑
开心,你好。不知道,你有没有注意这个问题,当向一个 asp.net页面中同时添加一个 客户端form和一个服务端控件时(比如login控件),客户端FORM和服务端控件在IE下都不能正常运行(不论是IE 6.0还是IE 7.0)。在firefox下,服务端控件可以正常运行。
我的调试环境即页面环境如下:
XP PRO EN+SQL 2005 EXPRESS+VS 2005 PRO
ASP.NET页:一个html form,form 的method采用get,action指向一个搜索引擎的处理页面;同时页面布置了一个login控件。

1.当我输入了搜索条件后,点击html form的submit按钮后,出现如下错误提示:
"Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster"
2.当我在login中输入用户登陆信息后,点击login按钮,页面没有任何反应。

以上1和2都是在IE 中进行的操作。
-----------
不知道开心能否帮个忙,指点一下迷津。我先在此谢过。
2007-06-05 14:24:00 | [匿名:jresins]
#回复: ASP.NET 2.0 Tips(1):跨页提交 编辑
哈,我找到方法了,嘿嘿
2007-05-02 16:52:00 | [匿名:toni]
#回复: ASP.NET 2.0 Tips(1):跨页提交 编辑
2007-04-30 16:36:00 | [匿名:blue]
#回复: ASP.NET 2.0 Tips(1):跨页提交 编辑
感谢开心大哥能够解答
2007-04-22 10:43:00 | [匿名:toni]
#回复: ASP.NET 2.0 Tips(1):跨页提交 编辑
painie,是的,只能限制死了,
我的问题是多个A.aspx提交到一个B.aspx怎么处理啊?比如A1.aspx,A2.aspx.A3.aspx.......An.aspx提交到B.aspx怎么处理呢?
2007-04-22 10:42:00 | [匿名:toni]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
<%...@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>
这句是不是限制死了只能由SourcePage.aspx页面来提交给TargetPage.aspx?
2006-04-15 17:01:00 | [匿名:PAINIE]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
会不会比"传统"慢啊
2006-03-03 10:50:00 | [匿名:Dreamer]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
请教一下: 现在在 1.ascx中有个控件如TextBox,那么在1.aspx中引用了这个1.ascx(register ...).在1.aspx中有个Button,当触发click时要读取或者调用1.ascx.cs中的事件,为什么不成功?或者说发现错误码:未引用实例变量(类似这样的提示)..我看过duwamish7.0中,它是利用如:
1.aspx.cs 来调用1.ascx上的事件处理,不直接去调用1.ascx控件或事件的.谢..
2005-11-05 12:28:00 | [匿名:MM]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
如果有多个页面提交到同一个页面应该怎么办呢?
配置多个PreviosPageType?
2005-08-20 19:26:00 | [匿名:bugsoft]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
如果将代码放入代码隐藏文件(*.cs),情况是怎么样的咯?
2005-08-18 11:48:00 | [匿名:hz]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
纯粹是初学者,想要学学.net , 但是总是不得其门而入?

这两天特别郁闷,VWD 的站点管理中,为什么我的asp.net网站管理工具的"提供程序"只有AspNetSQLProvider?为什么没有AspNetAccessProvider?

我的.net Framework版本是2.0.50215,在网站管理工具的"提供程序"中只有AspNetSqlProvider,各位高手麻烦看一下!我郁闷死了.

在"安全"选项卡中提示我数据存储在Access文件中,可
2005-08-05 10:12:00 | [匿名:过客]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
但是如果一个页面中有多个要提交的呢?
比如在index.aspx中有一个要提交到Login.aspx和一个提交到SEARCH。ASPX的。提交后,是把Form里所有值都传过去?不知支不技持多个FORM,我觉得这样较合理,如ASP中的一样。
2005-08-04 18:06:00 | [匿名:修罗]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
PreviousPage.YourName
---
这样处理方便得多了. 但面向整体的设计而言, 跨页的提交还是显得不太优雅. 我觉得这只是解决特定问题的一种特殊手段, 是不适合大规模使用的.
2005-08-04 12:04:00 | [匿名:春鱼]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
当然是Targetsource.aspx了
看了文章后,最好实际试一下:),而不只是看,更加不要把源代码拷过去然后就Run Success就认为万事大吉了。
2005-08-03 22:31:00 | [匿名:开心就好]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
提交到不同的页面是什么样的啊。显示的是哪一页呢?
2005-08-03 21:49:00 | [匿名:noo]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
是挺方便的!
2005-08-03 16:25:00 | [匿名:Csover]
#re: ASP.NET 2.0 Tips(1):跨页提交 编辑
这是不错, 但好像不太灵活.
2005-08-03 13:48:00 | [匿名:Rice]
对不起,目前本随笔不允许发表新评论.