我找到了针对我的具体需求的解决方法,但无论如何我认为我会问这个问题。
假设我有一个带有母版页的典型数据输入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),在我看来,明确指出跨页面发布实际上是将表单发布到另一个页面。
也许我误解了这是改变表单的动作,但是当我单击我改变的按钮时,无论我的源表单是否在我的目标上的任何地方都没有调用任何内容 - 它只会回发到当前页面。
答案 0 :(得分:1)
我认为使用PostBackUrl
属性不会更改标记中表单的action
,因为可能有许多其他控件正在执行正常的回发。我想,当按下这个特定按钮时,会使用一些javascript来更改表单的action
。
答案 1 :(得分:1)
您需要在数据来自的第二页上发布声明。
所以你有:
PostBackUrl="EnterInfo.aspx"
在EnterInfo.aspx上,您声明可以获取信息的位置
<%@ PreviousPageType VirtualPath="~/SelectedUser.aspx" %>
你得到他们......
if (Page.PreviousPage != null)
{
if(Page.PreviousPage.IsCrossPagePostBack == true)
{
GetTheClass = PreviousPage.MyDataClass;
}
}
PostBackUrl不会更改表单网址。
一些参考。
ASP.NET how to access public properties?
Cross-page postbacks and back again retaining data from source page
诗 起初我以为你只是输入你在渲染中看到的内容,但如果不是这样的情况正如@Mystere指出你需要在asp.net表单中运行它。
答案 2 :(得分:0)
首先,正如Graham所说.. PostBackUrl不会改变回发动作。其次,你只能在启用asp.net的表单上使用PostBackUrl,这意味着表单必须有runat =“server”