我遵循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" />
答案 0 :(得分:0)
这对我来说很好。如果PreviousPage为null,则通常表示当前页面未显示为跨页回发的结果。
您能否在第二页确认错误?
此外,按钮定义中的onclick="btn_Submit_Click"
是什么?应该没有代码响应原始页面上的click事件。请记住,它将由目标页面处理。
编辑:现在您已经更新了问题,我的最后一点似乎就是问题。您正在从原始页面进行服务器传输。这是 NOT 跨页回发,这就是PreviousPage为空的原因。
从按钮中删除onclick属性并删除btn_Submit_Click。