加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么Page.PreviousPage始终为null?

发布时间:2020-12-16 09:53:57 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试按照 this MSDN article进行跨页面发布.我有这样的代码: CrossPagePosting1.aspx form id="form1" runat="server" h1Page 1/h1 asp:TextBox ID="TextBox1" runat="server"/asp:TextBoxbr / asp:Button ID="Button1" runat="server" Text="Button"
我正在尝试按照 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信息,但仅限于非友好的网址[例如:www.you.com/mypage.aspx],不过这个如果您尝试访问Friendly-Url页面会出现错误[例如:www.you.com/mypage]<<没有.aspx).>如果您需要PreviousPage信息,则必须设置您网页中的上一篇文章指令<%@ PreviousPageTypeVirtualPath =“?/ Page1.aspx”%>或者也许在a中使用Server.TransferOnClick方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读