【问题标题】:NullReferenceException on ASP.NET PreviousPage PropertyASP.NET PreviousPage 属性上的 NullReferenceException
【发布时间】:2011-01-11 18:34:34
【问题描述】:

我按照 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" />

【问题讨论】:

  • 你在哪里试过 Server.Transfer - 你能显示你当时使用的代码吗?

标签: c# asp.net postback


【解决方案1】:

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

您能否确认第二页上出现了错误?

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

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

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

【讨论】:

  • 我删除了事件处理程序,仍然是同样的错误。错误出现在访问 PreviousPage.Username 的第二页代码隐藏文件中。
  • 是的,见上文。删除了事件处理程序和 btn_Submit_Click,仅使用 PostBackUrl。
  • 这应该可以,除非您有其他问题。使用调试器单步执行目标页面中的 Load 事件。是 null 的 PreviousPage 吗?另外,我可能会在 btn_Submit_Click 中设置一个断点,以绝对确定它还没有从某个地方被调用。
  • PreviousPage 为空,但我注意到 Page_Load 触发了两次,并且它只是在值实际已经加载后第二次出现空,这正常吗?我在页面上有一个数据网格并调用 DataBind() 可能会刷新页面再次触发 Page_Load。可能是问题所在。
  • 我不确定。将目标页面中的 Load 事件更改为仅在 !IsPostBack 时引用 PreviousPage。这样,代码在回发时不会做任何事情。理想情况下,它还应该在引用 PreviousPage 之前验证它不为空。 { 用户名 = 上一页。用户名; }
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 2012-11-16
  • 2020-07-04
  • 1970-01-01
  • 2020-08-15
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多