在ASP.NET程序中跨页面传值
作者:ade 日期:2011-04-04
开始ASP.NET课程, 刚解析了第一个ASP.NET页面,初步分析了运行原理, 上机课上, 有学生因为之前有过web程序设计的经验, 问如何在ASP.NET程序中做到跨页面传值. 因为他发现不能直接在Form里写action.
在网上搜索的话,会发现大量没有太大价值的所谓解决方法,比如使用QueryString, 使用Server.Transfer方法,使用Response.Redirect方法等.
我们要做的是把Form里的数据全传给另外一个页面进行处理,这个作为一个web程序,是经常要做的,有的时候是必须具备的.
其实解决的方法ASP.NET里就有.我们不妨这样做:
第一个页面, postarticle.aspx, 添加两个控件,并设置form的defaultbutton属性
<div>
<asp:TextBox ID="articleTitle" runat="server" Text="historycreator.com"></asp:TextBox>
<asp:Button ID="Submit" runat="server" Text="Button" PostBackUrl="~/saveArticlePosted.aspx" />
</div>
vtimes.net , historycreator.com原创
</form>
对应的postarticle.aspx.cs, 添加存取器方法
public string ArticleTitle { get { return this.articleTitle.Text; } }
第二个页面 , savearticle.aspx, 在Page指令后,添加上PreviousPageType指令
<%@ PreviousPageType VirtualPath="~/postArticle.aspx" %>
添加一个Label控件, ID为articleTitle
对应的 savearticle.aspx.cs的Page_Load方法内添加
this.artitleTitle.Text = PreviousPage.ArticleTitle;
打开第一个页面运行一下,看看效果.
说明如下:
1. postarticle.aspx里的ID为Submit的按钮需要有PostBackUrl属性指明提交数据的对象.
2. postarticle.aspx的form里,有defaultbutton="Submit", 指明如果输入完数据,按回车的话默认调用的是这个按钮.
3. 一定需要在postarticle.aspx.cs里将想提交的数据对应的存取器get方法实现了,且应该是public或者protect的.
4. 在savearticle.aspx的Page指令后添加<%@ PreviousPageType VirtualPath="~/postArticle.aspx" %>, 指明接收上一页面的数据.
5. 在savearticle.aspx.cs里就可以使用PreviousPage对象来获取对应的值了.