我在更新面板中使用 Response 对象时遇到问题
<asp:UpdatePanel ID="UP_ExportPrompt" runat="server" UpdateMode="Always">
<ContentTemplate>
<div>
<ul>
<li>
<label class="f450">
<asp:Literal runat="server" Text="<%$ Resx : Reports_ExportOnlyPrompt %>" />
</label>
</li>
<li>
<label class="f80">
<asp:Label runat="server" Text="<%$ Resx : FileFormatColon %>" />
</label>
<asp:DropDownList ID="DDL_ExportFileType" runat="server">
<asp:ListItem Value="0" Text="Excel" />
<asp:ListItem Value="1" Text="PDF" />
<asp:ListItem Value="2" Text="Word" />
</asp:DropDownList>
</li>
<li class="right">
<asp:Button ID="BT_CreateExport" runat="server" Text="OK" OnClick="BT_CreateExport_OnClick" />
<asp:Button ID="BT_CreateReport" runat="server" Text="<%$ Resx : Reports_ContinueWithImmediateView %>" OnClick="BT_CreateReport_OnClick" />
<asp:Button ID="BT_Cancel" runat="server" Text="<%$ Resx : CancelVerb %>" OnClick="BT_Cancel_OnClick" />
</li>
</ul>
</div>
</ContentTemplate>
</asp:UpdatePanel>
UP_ExportPrompt 更新面板内容显示在 Nyro 模式窗口中。单击 BT_CreateExport 后,将创建 excel 文件并使用 Response 对象发送到客户端。我没有为此粘贴代码,因为它与问题无关。
现在,我尝试将按钮创建为触发器
<Triggers>
<asp:PostBackTrigger ControlID="BT_CreateExport" />
</Triggers>
它不再工作了。
有人知道这个问题的解决方案吗?
这是一个已知问题,并且“将按钮设置为触发器”解决方案似乎可以解决此问题的大多数情况...但它对我不起作用
抛出的错误是:
0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.
编辑:好的,我已经设法找到有关该问题的更多信息。即使我设置了PostBackTrigger
,回发仍然是异步的。根据文档, PostBackTrigger 会导致发生完整的回发。在我的情况下,它没有,这是问题所在。