发布
社区首页 >问答首页 >为什么Page.PreviousPage总是空的?

为什么Page.PreviousPage总是空的?
EN

Stack Overflow用户
提问于 2014-01-24 02:18:16
回答 4查看 13.8K关注 0票数 6

我正在尝试通过跟随这篇MSDN文章跨页面发布。我有这样的代码:

CrossPagePosting1.aspx

代码语言:javascript
代码运行次数:0
复制
<form id="form1" runat="server">
    <h1>Page 1</h1>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="CrossPagePosting2.aspx"/>
</form>

CrossPagePosting2.aspx

代码语言:javascript
代码运行次数:0
复制
<form id="form1" runat="server">
    <h1>Page 2</h1>
    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</form>

CrossPagePosting2.aspx.cs

代码语言:javascript
代码运行次数:0
复制
protected void Page_Load(object sender, EventArgs e)
{
    TextBox TextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
    Label1.Text = TextBox1.Text;
}

上面的代码在Page.PreviousPage上生成一个Page.PreviousPage。为什么?

这是一个ASP.Net 4.0应用程序。

它使用FriendlyUrls,这是默认的。

注意:我不希望上一页是强类型的,例如使用PreviousPageType指令。根据引用的文章,这不应该是必要的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-24 08:23:47

这里的问题是由FriendlyUrls引起的,它默认情况下安装在我工作的测试站点上。我禁用了FriendlyUrls,它起了作用。

票数 1
EN

Stack Overflow用户

发布于 2015-01-08 20:20:53

我发现友好的URLS可能会给你带来这个问题。默认情况下,Web模板包括ASP.NET友好URL。

使用visual中的默认WebForm时,AutoRedirectMode设置为永久性。这使您将请求转换为"GET“,并且由于您使用的是友好的URLS,因此无法评估PreviousPage。

解决方案:

  • 如果您想要一个"POST“操作,那么设置AutoRedirectMode = RedirectMode.Off (这将给您提供PreviousPage信息,但只来自非友好的-Url页面(例如: www.you.com/mypage.aspx ),但是如果您尝试访问友好的网址页面ex: www.you.com/mypage << no .aspx,这会给您带来错误)。
  • 如果需要PreviousPage信息,则必须在网页中设置前面的post指令<%@ PreviousPageType VirtualPath="~/Page1.aspx“%>或可能在OnClick方法中使用Server.Transfer。
票数 7
EN

Stack Overflow用户

发布于 2014-01-24 06:45:25

我想下面的文章会对你有帮助。

http://csharpdotnetfreak.blogspot.com/2009/08/cross-page-posting-in-aspnet.html

如何使用跨页投递PostBack有两种方法

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21323196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档