跨页面发布主页

问题描述:

我发现了一个解决方案来满足我的特定需求,但我想我会问这个问题。跨页面发布主页

假设我有一个带有母版页的典型数据录入Web项目 - 而不是使用Session变量,并使用Response.Redirect或Server.Transfer将属于通过数据输入方式的用户重定向到下一步,我宁愿使用跨页面发布。

我试图建立我的网站之一,在这种方式下,与像一个按钮:

<asp:Button ID="next" text="next" runat="server" PostBackUrl="EnterInfo.aspx" /> 

当我就去考了变化,我<form>标签都没有改变:

<form id="aspnetForm" action="SelectUser.aspx" method="post" name="aspnetForm"> 

我是否错过了这里的任何细节,或者是跨页面发布而不是用于主页面?

编辑: 上面的表单标签是呈现在客户端上的标签 - 而不是服务器端标签。我已阅读MSDN文章(like this one),这些文章似乎明确声明跨页面发布实际上是将该表单发布到另一个页面。

也许我误解了这个改变了表单的动作,但是不管我的源表单在我的目标上的任何地方不会调用任何东西,当我点击我改变的按钮时 - 它只是回发到当前页面。

我不认为使用PostBackUrl属性会更改标记中表单的action,因为可能有许多其他控件只是执行普通的回发。我想象一下,当按下这个特定的按钮时,一些javascript被用来改变表格的action

您需要在数据来自的第二页上放置声明。

所以,你必须:

PostBackUrl="EnterInfo.aspx" 

在EnterInfo.aspx声明,你可以得到的信息

<%@ PreviousPageType VirtualPath="~/SelectedUser.aspx" %> 

,你通过让他们...

if (Page.PreviousPage != null) 
{ 
    if(Page.PreviousPage.IsCrossPagePostBack == true) 
    { 
     GetTheClass = PreviousPage.MyDataClass; 
    } 
} 

一项PostBackUrl不要更改表单url。

一些参考。
ASP.NET how to access public properties?

Cross-page postbacks and back again retaining data from source page

诗 起初我以为你只需要输入你所看到的渲染,但如果并非如此,因为@Mystere指出你需要一个asp.net中运行这些形成。

+0

是的,您是正确的 - 我粘贴的表单标记是呈现的标记。 – jwiscarson 2010-11-13 03:39:39

首先,正如Graham所说。PostBackUrl不会更改回发操作。其次,您只能在启用了asp.net的表单上使用PostBackUrl,这意味着表单必须具有runat =“server”