Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法注销带有跨页过帐的UpdatePanel异常_C#_Asp.net_Cross Page Posting - Fatal编程技术网

C# 无法注销带有跨页过帐的UpdatePanel异常

C# 无法注销带有跨页过帐的UpdatePanel异常,c#,asp.net,cross-page-posting,C#,Asp.net,Cross Page Posting,我遇到了一个可怕的异常,无法注销ID为“UpdatePanel”的UpdatePanel,因为在尝试组合弹出窗口和一些跨页面发布时,它未向ScriptManager注册。我用一个小例子再现了这个问题 我已经看到了处理UpdatePanel卸载事件的其他问题,但是添加跨页面发布似乎不起作用 我如何回避这个问题 要使用以下代码复制问题,请执行以下操作: 启动设置页面 按查看弹出链接 关闭弹出窗口 按“下一步”按钮以转到目标页面 按“上一步”按钮转到设置页面 按查看链接并关闭弹出窗口 按下Next(下

我遇到了一个可怕的异常,无法注销ID为“UpdatePanel”的UpdatePanel,因为在尝试组合弹出窗口和一些跨页面发布时,它未向ScriptManager注册。我用一个小例子再现了这个问题

我已经看到了处理UpdatePanel卸载事件的其他问题,但是添加跨页面发布似乎不起作用

我如何回避这个问题

要使用以下代码复制问题,请执行以下操作:

启动设置页面 按查看弹出链接 关闭弹出窗口 按“下一步”按钮以转到目标页面 按“上一步”按钮转到设置页面 按查看链接并关闭弹出窗口 按下Next(下一步)按钮,查看故障 以下是长度的亮点,但它应该是可切割的:

Setup.aspx

ViewData.aspx

TargetPage.aspx


正如您所看到的,只要将UpdatePanel放在页面上,什么也不做就足够了。无意冒犯,但您忽略了指定问题。很好的用户名,BTW@AnnL. 没有人拿。已更新并指定我不希望有此行为。
<head runat="server">
    <title>Setup </title>
    <script type="text/javascript">
        function openCenteredWindow(url, height, width, name, parms) {
            //Snip setting up window location stuff
            var win = window.open(url, name, winParms);
            return win;
        }
    </script>
</head>
<body>    
    <h1>Setup Page</h1>
    <form id="aspnetForm" runat="server">
    <div>
        <asp:TextBox ID="txtData" runat="server" Width="80%" Text="<%# Information %>" />
        <br />

        <asp:LinkButton ID="lbViewData" runat="server" 
        OnClientClick="aspnetForm.target='ViewDataPopup';" 
        Text="View In Popup" /> <br />

        <asp:Button ID="btnNext" runat="server" Text="Next" OnClick="btnNext_Click" />
    </div>
    <div>
        <br />
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
    <asp:updatepanel ID="UpdatePanel" runat="server" OnUnload="UpdatePanel_Unload"></asp:updatepanel>
    </div>
    </form>
</body>
public partial class Setup : System.Web.UI.Page
{
    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);
        if (this.ViewState["Information"] != null)
            _Information = this.ViewState["Information"].ToString();
    }

    protected override object SaveViewState()
    {
        this.ViewState["Information"] = _Information;
        return base.SaveViewState();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null && PreviousPage is TargetPage)
        {
            _Information = ((TargetPage)PreviousPage).SetupData;
        }
        else if (!Page.IsPostBack)
        {
            _Information = String.Format("This test started at {0}", DateTime.Now);
        }
        Page.DataBind();
        lbViewData.PostBackUrl = "ViewData.aspx?u=0";
        lbViewData.Attributes.Add("onclick", "JavaScript:openCenteredWindow(\"ViewData.aspx?u=0\", 400, 300, \"ViewDataPopup\", 'scrollbars=yes');");
    }

    private string _Information;
    public string Information
    {
        get { return _Information; }
    }

    protected void btnNext_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Server.Transfer("~/TargetPage.aspx");
    }
}
<%@ PreviousPageType VirtualPath="~/Setup.aspx" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head runat="server">
    <title>View Data</title>
       <script type="text/javascript">
           function fixForm() {
               opener.document.getElementById("aspnetForm").target = "";
               opener.document.getElementById("aspnetForm").action = "";               
           }
    </script>
</head>
<body onload="fixForm()">
    <form id="aspnetForm" runat="server">
    <div>
        <h2 >View Data</h2>
    </div>
    <asp:Label ID="lblData" runat="server" Text="<%# SetupData %>" />
    </form>
</body>
protected void Page_Load(object sender, EventArgs e)
{
    if (PreviousPage != null)
    {
        Setup setup = (Setup)PreviousPage;
        this.SetupData = setup.Information ?? "Data not set in Setup Page";
    }
    Page.DataBind();
}

private string _setupData = "Did not get updated data";
protected string SetupData
{
    get { return _setupData; }
    set { _setupData = value; }
}
<%@ PreviousPageType VirtualPath="~/Setup.aspx" %>
<body style="background-color: #9999BB">
    <h1>Target Page</h1>
    <form id="aspnetForm" runat="server">
    <div>
        <asp:Label ID="lblData" runat="server" Text="<%# SetupData %>" /><br />
        <asp:Button ID="btnBack" runat="server" Text="Back" OnClick="btnBack_Click" />
    </div>
    </form>
</body>
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (this.PreviousPage == null)
                Response.Redirect("Setup.aspx");

            this.SetupData = PreviousPage.Information;
        }
        Page.DataBind();
    }

    public string SetupData
    {
        get { return ViewState["SetupData"].ToString(); }
        set { ViewState["SetupData"] = value; }
    }

    protected void btnBack_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Server.Transfer("~/Setup.aspx");
    }