【问题标题】:Sys.WebForms.PageRequestManagerServerErrorException: Invalid postback or callback argumentSys.WebForms.PageRequestManagerServerErrorException:回发或回调参数无效
【发布时间】:2017-12-20 23:54:16
【问题描述】:

SharePoint 上,无法通过由外部 Web 控件生成的事件在更新面板中显示/隐藏表格行不止一次 strong>,,它仅在第一个 ddl 项目选择时起作用(尽管它在 SharePoint 上下文之外完全起作用)。

抛出的错误:

SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

aspx 文件:

<asp:TableRow runat="server" ID="tbr1">
    <asp:TableCell ID="tbc" runat="server" CssClass="ms-formbody">
        <asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged" />
    </asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="tbr2">
    <asp:TableCell>
        <asp:UpdatePanel ID="udp" runat="server" UpdateMode="Always">
            <ContentTemplate>
                <asp:Table ID="tb" runat="server">
                    <asp:TableRow runat="server" ID="tbr21">
                    <%-- content --%>
                    </asp:TableRow>
                </asp:Table>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ddl" EventName="SelectedIndexChanged" />
            </Triggers>
        </asp:UpdatePanel>
    </asp:TableCell>
</asp:TableRow>

aspx.cs 文件:

protected void ddl_SelectedIndexChanged(object sender, EventArgs e){
    if (ddl.SelectedItem.Text == "value1"){
        tb.Visible = true;
        // instruction here
    } else {
        tbdadospessoais.Visible = false;
        // instruction here
    }
}

【问题讨论】:

  • @krlzlx 我已经发布了我自己问题的答案,但我不能接受。我应该发布编辑而不是回答我自己的问题吗?泰
  • 不,不要使用解决方案编辑您的问题。回答是正确的做法。只需单击复选标记即可接受它。

标签: asp.net sharepoint updatepanel


【解决方案1】:

执行了条件更新:

aspx 文件:

<asp:TableRow runat="server" ID="tbr1">
    <asp:TableCell ID="tbc" runat="server" CssClass="ms-formbody">
        <asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged" />
    </asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="tbr2">
    <asp:TableCell>
        <asp:UpdatePanel ID="udp" runat="server" UpdateMode="Always">
            <ContentTemplate>
                <asp:Table ID="tb" runat="server">
                    <asp:TableRow runat="server" ID="tbr21">
                    <%-- content --%>
                    </asp:TableRow>
                </asp:Table>
            </ContentTemplate>
        </asp:UpdatePanel>
    </asp:TableCell>
</asp:TableRow>

aspx.cs 文件:

protected void ddl_SelectedIndexChanged(object sender, EventArgs e){
    if (ddl.SelectedItem.Text == "value1"){
        tb.Visible = true;
        // instruction here
        upd.update();
    } else {
        tbdadospessoais.Visible = false;
        // instruction here
        upd.update();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 2011-09-26
    相关资源
    最近更新 更多