使用Cross-Page Postback(跨页面提交)在页面间传递数据
tml> CrossPage1.aspx不包含任何代码,效果如下: 现在点击按钮,该页面就被提交到CrossPage2.aspx了。此时CrossPage2.aspx页面可以使用Page.PreviousPage属性与CrossPage1.aspx进行交互了,下面这个事件处理函数演示了如何获取源页面的标题并显示它: if (PreviousPage != null) 注意:该方法在访问PreviousPage对象前先对其作了null检查,如果结果为false,表明没有跨页面提交发生,也就是说,CrossPage2.aspx是被直接请求的,或者由其自身提交,此时PreviousPage对象不可用。 从源页面中获取更多数据 上面那个示例作了一个有趣的尝试,但仅仅如此,我们还是不能传递任何有用的信息。
if (PreviousPage != null) string firstName = (PreviousPage.FindControl("txtFirstName") as TextBox).Text; if (PreviousPage != null) <%@ PreviousPageType VirtualPath="~/CrossPage1.aspx" %> 此时,PreviousPage属性会自动使用CrossPage1类型,编辑器中的智能提示也可以使用了。但是这种方法相当脆弱,因为你只能使用一个页面类!因此,出于灵活性考虑,使用类型转换的方法会更好。 好了,不管怎样,现在已经将PreviousPage对象转换为合适的页面类型了,但是你还是不能直接访问它包含的控件对象。这是因为这些控件都被声明为保护类型(protected),此时的解决方案是使用属性。 比如,如果希望公开源页面上两个文本框控件的值,可以添加属性来封装控件对象,如在CrossPage1类中添加属性: public TextBox FirstNameTextBox public TextBox LastNameTextBox 更好的方法是定义更具体的属性,它们应当仅仅提供你需要的东西。比如,你可以考虑添加一个FullName属性,该属性读取两个文本框的值: public string FullName |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |