ASP.NET PreviousPage属性上的NullReferenceException

时间:2011-01-11 18:34:34

标签: c# asp.net postback

我遵循MSDN关于在asp.net页面之间传输数据的指示。

但是当使用'PreviousPage'属性访问以前的页面控件时,我得到一个空引用异常,即PreviousPage没有设置为对象的实例。

这是我的代码:

public partial class Portal : System.Web.UI.Page
{
    public string Username
    {
        get
        {
            return txt_User.Text;
        }
    }

这是初始页面上的提交按钮:

<asp:Button ID="btn_Submit" runat="server" onclick="btn_Submit_Click" 
    PostBackUrl="~/Query.aspx"

第二页的上一页属性:

    protected void Page_Load(object sender, EventArgs e)
    {
        Username = PreviousPage.Username; 
    }

根据MSDN说明,我还在第二页标记文件的顶部添加了它:

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

另请注意,我已尝试过Server.Transfer来切换页面而产生相同的错误。

编辑,这里是在初始页面点击事件中使用Server.Transfer:

 protected void btn_Submit_Click(object sender, EventArgs e)
    {
        Server.Transfer("Query.aspx"); 
    }

编辑,没有事件处理程序的按钮代码:

<asp:Button ID="btn_Submit" runat="server"
    PostBackUrl="~/Query.aspx"
    style="height: 26px" Text="Submit" />

1 个答案:

答案 0 :(得分:0)

这对我来说很好。如果PreviousPage为null,则通常表示当前页面未显示为跨页回发的结果。

您能否在第二页确认错误?

此外,按钮定义中的onclick="btn_Submit_Click"是什么?应该没有代码响应原始页面上的click事件。请记住,它将由目标页面处理。

编辑:现在您已经更新了问题,我的最后一点似乎就是问题。您正在从原始页面进行服务器传输。这是 NOT 跨页回发,这就是PreviousPage为空的原因。

从按钮中删除onclick属性并删除btn_Submit_Click。