System.NullReferenceException - 调用辅助页面

时间:2011-04-06 20:41:28

标签: c# asp.net nullreferenceexception

我的组件(ascx):

这个组件是我页面的一部分,与他一起,我打开一个新页面(下一个代码)。

    public void LoadSeller(string name, string id)
    {
        this.txtSeller.Text = name;
        this.hdnSellerID.Value = id;
    }

我的弹出窗口(aspx):

使用此代码我进行了一些搜索,并在GridView上选择一个项目,将其发送回我的ascx。

    protected void btnSave_Click(object sender, EventArgs e)
    {
        Components.BasicData basicData= new Components.BasicData();

        Button save = (Button)sender;
        basicData.LoadSeller("TEST", save.CommandArgument);
    }

回发后工作,我收到了正确的数据(我用我的调试检查)。但是txt和hidden都是null(就像它们没有加载一样),它们没有我的弹出工作,但是我需要弹出它。

有什么想法吗?

PS:我的viewState已启动。

我调试了整个代码,它停在了

  

this.txtSeller.Text = name;

LoadSeller的第一行。这说“this.txtSeller”为空,我不知道为什么。我检查了我的.designer.cs并声明了this.txtSeller。 (如果我没有尝试从其他页面加载,它也可以工作)

Obs:我想知道我的代码是否可能以某种方式破坏了我的另一页上的负载(或类似的东西)。

感谢您的帮助^。^

修改

我的结构是:

Control1

Control2

    **Open pop up**

Control3

POP UP

Search

Gridview with buttons

gridview中的按钮

Goes to my second code "my pop up (aspx):"

Close pop up

在我的Control2中,我的第一个代码是“我的组件(ascx):”

字幕:Control == userControl

面包屑导航:

    • 组件(文件夹)
      • BasicData.ascx
    • PopUp.aspx

1 个答案:

答案 0 :(得分:1)

这一行Components.BasicData basicData= new Components.BasicData();不是创建自定义控件和他的所有内部控件,nether是指向现有控件的指针。

如果你已经准备好在这个页面上包含你的控件,那么你可以通过它的控件id直接调用这个函数。此控件已准备好与您的页面一起存在,只需调用它即可。

protected void btnSave_Click(object sender, EventArgs e)
    {
        Button save = (Button)sender;
        YourCustomControlID.LoadSeller("TEST", save.CommandArgument);
    }

现在,如果您希望将数据发送到下一页,您首先要创建一个类,以保存您的信息,并使其在不同页面之间移动并填充数据。

在每个页面中,您都有一个对此类的引用,一个变量,以太创建一个新的ether从上一页获取它。您将它存储在ViewState

现在来自 Page1 - >第2页。

您可以将Page1设置为

从Page1发送
PostBackUrl="Page2.aspx"

在page2.aspx上,您可以设置获取信息的位置

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

你得到他们......

if (Page.PreviousPage != null)
{
    if(Page.PreviousPage.IsCrossPagePostBack == true)
    {
        GetTheClass = PreviousPage.MyDataClass;
    }
}

另一种手动方式是使您的课程可连续,通过邮寄将其作为xml发送,并在下一页解码。