2011-06-22 16 views
0

SQL Server Reporting ServicesからレポートをレンダリングするためのMVC 3ビューがあります。上部にはレポートのパラメータをキャプチャするフォームがあり、投稿時にコントローラの操作が忠実に呼び出され、レポートは< div>にレンダリングされます。実行時にAjaxと完全なポストバックを選択する

Excelにエクスポート機能が追加されました。フォームから同じパラメータが必要ですが、今度は、コントローラにAjaxを呼び出すのではなく、完全なポストバックが必要なので、ユーザにレポートをダウンロードする機会が与えられます。それ以外の場合、レポートは既存のビューでバイナリコンテンツとしてレンダリングされます。

私はクリックした「送信」ボタンに応じて、フォームの動作をAjaxと通常のポストバックに切り替えることができると考えています。

アイデア?

答えて

1
@using (Html.BeginForm("Export", "Report")) 
{ 
    ... some form fields 

    @Html.ActionLink("Render report", "Render", "Report", null, new { id = "generateReport" }) 
    <input type="submit" value="Export to Excel"> 
} 

<div id="report"></div> 

、その後AJAXify が別々のjsファイルでリンクを報告レンダリング:

$(function() { 
    $('#generateReport').click(function() { 
     var form = $(this).closest('form'); 
     $.post(this.href, form.serialize(), function(result) { 
      $('#report').html(result); 
     }); 
     return false; 
    }); 
}); 

とあなたのReportControllerあなたは両方ExportRenderアクションを持っているでしょうインチ

関連する問題