gpt4 book ai didi

asp.net - 为什么 Page.PreviousPage 总是为空?

转载 作者:行者123 更新时间:2023-12-02 12:22:14 25 4
gpt4 key购买 nike

我正在通过以下方式尝试跨页面发布this MSDN article 。我有这个代码:

CrossPagePosting1.aspx

<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

<form id="form1" runat="server">
<h1>Page 2</h1>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</form>

CrossPagePosting2.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
TextBox TextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
Label1.Text = TextBox1.Text;
}

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

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

它使用默认的FriendlyUrls。

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

最佳答案

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

当您使用 Visual Studio 中的默认 WebForm 时,AutoRedirectMode 将设置为 Permanent。这会使您请求“GET”,并且由于您使用的是友好 URL,因此无法评估 PreviousPage。

解决方法:

  • 如果您想要“POST”操作,请设置 AutoRedirectMode =RedirectMode.Off(这将为您提供 PreviousPage 信息,但仅来自非友好 URL 页面 [例如:www.you.com/mypage.aspx],但是这如果您尝试访问Friendly-Url页面,将会出现错误[例如:www.you.com/mypage] << 无 .aspx)。

  • 如果您想要 PreviousPage 信息,您必须设置您网页中的上一篇文章指令 <%@ PreviousPageTypeVirtualPath="~/Page1.aspx"%> 或者可以在 a 中使用 Server.TransferOnClick 方法。

关于asp.net - 为什么 Page.PreviousPage 总是为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com