在ASP.NET 1.x的时候,很多朋友可能需要进行跨页提交的处理,也就是从页面A能够提交到页面B,甚至不同的Control其目标处理页面也各不相同。尤其是从ASP/JSP/PHP转过来的开发人员,可能更有这种需求。但很不幸,在ASP.NET 1.x的时候,处理这种跨页请求是十分丑陋的,需要非常多的“技巧化”处理。
在ASP.NET 2.0的时候,对于跨页提交已经有了非常合理的解决方案,以下就是一个示例。
SourcePage.aspx: 请注意Button1的PostBackUrl属性设置
OK,就通过这么简单的两个属性设置,就可以非常方便的得到跨页提交的特性。当然,您也可以根据您自己的需求,比如每个Control需要提交到不同的页面来进行更加复杂的设置。<%...@ 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的属性设置
<%...@ PreviousPageType VirtualPath="~/SourcePage.aspx" %><%...@ 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">...
![]()
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>
打印 | 张贴于 2005-08-03 13:00:00 | Tag:C#编程


public string YourName

}
}
留言反馈
我的调试环境即页面环境如下:
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 中进行的操作。
-----------
不知道开心能否帮个忙,指点一下迷津。我先在此谢过。
我的问题是多个A.aspx提交到一个B.aspx怎么处理啊?比如A1.aspx,A2.aspx.A3.aspx.......An.aspx提交到B.aspx怎么处理呢?
这句是不是限制死了只能由SourcePage.aspx页面来提交给TargetPage.aspx?
1.aspx.cs 来调用1.ascx上的事件处理,不直接去调用1.ascx控件或事件的.谢..
配置多个PreviosPageType?
这两天特别郁闷,VWD 的站点管理中,为什么我的asp.net网站管理工具的"提供程序"只有AspNetSQLProvider?为什么没有AspNetAccessProvider?
我的.net Framework版本是2.0.50215,在网站管理工具的"提供程序"中只有AspNetSqlProvider,各位高手麻烦看一下!我郁闷死了.
在"安全"选项卡中提示我数据存储在Access文件中,可
比如在index.aspx中有一个要提交到Login.aspx和一个提交到SEARCH。ASPX的。提交后,是把Form里所有值都传过去?不知支不技持多个FORM,我觉得这样较合理,如ASP中的一样。
---
这样处理方便得多了. 但面向整体的设计而言, 跨页的提交还是显得不太优雅. 我觉得这只是解决特定问题的一种特殊手段, 是不适合大规模使用的.
看了文章后,最好实际试一下:),而不只是看,更加不要把源代码拷过去然后就Run Success就认为万事大吉了。