2012-03-01 10 views
0

簡略化されたシナリオは次のとおりです。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"の代わりにポストしているようです。私はこれを回避できる方法はありますか?

答えて

1

Looking at fiddler, it seems like the Search button is posting back to "Zip.aspx" instead of itself. Is there a way I can work around this?

その場合は、[検索にOnClientClickハンドラを追加してみてください、フォームのアクションは検索ページ自体の代わりに、Zip.aspx

何かのように設定されていることを確認してください:

function CheckPostBackURL() 
{ 
    document.getElementById('aspNetForm').action="Search.aspx"; 
} 

うまくいくかどうか分かりませんが、それはいい考えです。

+0

しかし、次の行はうまくいきました:btnSearch.Attributes ["onclick"] = "document.forms [0] .action = 'Search.aspx';" + ClientScript.GetPostBackEventReference(btnSearch、null); – John

関連する問題