簡略化されたシナリオは次のとおりです。ASP.Net:UpdatePanelポストバック添付ファイルの問題
私は2つのセクション、すなわち検索セクションとリストを含む結果グリッドからなるページを持っています。ユーザーは、zipファイルに追加したい結果グリッド内の各行のチェックボックスをオンにしてから、zipファイルを生成する別のページにポストバックするボタンをクリックします。
だから、我々が持っている:Zip.aspx内のロジックは次のようになりますどこ
[UpdatePanel1]
...Search Inputs...
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" />
[/UpdatePanel1]
[UpdatePanel2]
..Results Grid..
<asp:Button ID="btnZip" runat="server" Text="Zip" PostBackUrl="~/Zip.aspx"/>
[/UpdatePanel2]
は:
SearchPage previousPage = (SearchPage)PreviousPage;
List<Files> docs = previousPage.GetSelectedFiles();
...do logic...
Response.ContentType = "application/zip";
Response.AddHeader("Content-Length", zipBytes.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=Test.zip");
Response.BinaryWrite(zipBytes);
Response.End();
ページは、正しく結果グリッドに移入され、あなたが検索できるように正しく動作しますいずれかの行を選択して「Zip」ボタンを何回でも押すことができ、毎回正しく動作します。しかし
、あなたは少なくとも一度は「郵便番号」ボタンを押すと、検索条件に戻ってヒット再び、それはこのJavaScriptエラーになり「検索」した場合:
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near 'PK'.
を見ますフィドラー、それは、検索ボタンが "Zip.aspx"の代わりにポストしているようです。私はこれを回避できる方法はありますか?
しかし、次の行はうまくいきました:btnSearch.Attributes ["onclick"] = "document.forms [0] .action = 'Search.aspx';" + ClientScript.GetPostBackEventReference(btnSearch、null); – John