MVC3 Ajax.BeginForm Post Download File
===

     <div id="ProductionReport">
        <div class="ui-widget">
            @Using Ajax.BeginForm("Index", "Reports", ajaxOptions:=New AjaxOptions With {.InsertionMode = InsertionMode.Replace, .HttpMethod = "POST", .UpdateTargetId = "searchresultdata"}, htmlAttributes:=New With {.id = "productionform"})
                @Html.ValidationSummary(True)
                @<fieldset class="ui-widget-content">
                    <legend class="ui-state-default">Production Report</legend>
                    <div class="editor-label">
                        @Html.LabelFor(Function(model) model.ProductionReportData.FromDate, "From Date: ")
                        @Html.Raw(" ")
                        @Html.TextBoxFor(Function(model) model.ProductionReportData.FromDate, New With {.class = "ui-state-default", .id = "datepicker", .Style = "font-size:x-small;", .name = "fromdate"})
                        @Html.ValidationMessageFor(Function(model) model.ProductionReportData.FromDate)
                    </div>
                    <div class="editor-label">
                        @Html.LabelFor(Function(model) model.ProductionReportData.ToDate, "To Date: ")
                        @Html.Raw(" ")
                        @Html.TextBoxFor(Function(model) model.ProductionReportData.ToDate, New With {.class = "ui-state-default", .id = "datepicker2"})
                        @Html.ValidationMessageFor(Function(model) model.ProductionReportData.ToDate)
                    </div>
                    <div class="editor-label">
                        @Html.LabelFor(Function(model) model.ProductionReportData.ShowDetails, "Show Details: ")
                        @Html.EditorFor(Function(model) model.ProductionReportData.ShowDetails)
                    </div>
                    <div class="editor-label">
                        <input class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all"
                            type="submit" value="Search" name="btnSearch" />
                        <input class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all"
                            type="submit" value="Export Data" name="btnSearch" />
                    </div>
                </fieldset>
            End Using
        </div>
        <div id="searchresultdata" class="ui-widget-content">
        </div>
    </div>

    enter code h<HttpPost()> _
        Function ExportProductionReportData(ByVal data As ReportsModel) As FileResult


            Dim var = From I In db.scll_label Join P In db.pt_mstr On I.scll_part Equals P.pt_part _
                      Join C In db.sclws_cfg On I.scll_wsid Equals C.sclws_id _
                      Where P.pt_domain = "mueller" And C.sclws_domain = "mueller" _
                      And I.scll_transactiondate >= data.ProductionReportData.FromDate And I.scll_transactiondate <= data.ProductionReportData.ToDate _
                      Select I, P.pt_length, P.pt_net_wt, P.pt_desc1, P.pt_tol_high, P.pt_part_type, P.pt_um, _
                      C.sclws_proj_code, C.sclws_site

            Dim ProMod As New ProductionReportModel
            ProMod.ProductionDetails = New ObservableCollection(Of ProductionReportDetails)
            ProMod.ProductionGrandTotal = New ProductionReportGrandTotals
            ProMod.ProductionPartTotals = New ObservableCollection(Of ProductionReportTotalsByPart)


            ''Generate Production Details
            For Each rec In var

                Dim proModDtls As New ProductionReportDetails

                proModDtls.Customer = rec.I.scll_cust
                proModDtls.Feet = rec.I.scll_total_feet
                proModDtls.GrossWeight = rec.I.scll_weight
                proModDtls.NetWeight = rec.I.scll_weight - rec.I.scll_total_tare
                proModDtls.Part = rec.I.scll_part

                If rec.pt_um = "LB" Then
                    Try
                        proModDtls.Pieces = rec.I.scll_total_feet / rec.pt_length
                    Catch ex As Exception
                        proModDtls.Pieces = rec.I.scll_qty
                    End Try
                ElseIf rec.pt_um = "FT" Then
                    Try
                        proModDtls.Pieces = rec.I.scll_qty / rec.pt_length
                    Catch ex As Exception
                        proModDtls.Pieces = rec.I.scll_qty
                    End Try
                Else
                    proModDtls.Pieces = rec.I.scll_qty
                End If

                proModDtls.Quantity = rec.I.scll_qty

                proModDtls.ReasonCode = rec.sclws_proj_code

                proModDtls.StandardWeight = rec.I.scll_std_weight

                proModDtls.Station = rec.I.scll_wsid

                proModDtls.Tare = rec.I.scll_total_tare

                proModDtls.TareDetail = rec.I.scll_tare_detail

                proModDtls.Ticket = rec.I.scll_ticket

                Try
                    proModDtls.DrawingEfficiency = ((rec.I.scll_weight - rec.I.scll_total_tare) / rec.I.scll_std_weight) * 100

                Catch ex As Exception

                End Try

                proModDtls.TicketDate = rec.I.scll_transactiondate

                ProMod.ProductionDetails.Add(proModDtls)

            Next
            Dim csvCreator As New CSVFileMaker(Of ProductionReportDetails, List(Of ProductionReportDetails))
            csvCreator.data = ProMod.ProductionDetails.ToList
            Dim csvdata As String = csvCreator.GenerateCSVFile
            Dim d = Encoding.ASCII.GetBytes(csvdata)
            Dim filename As String = "ProductionReport" & Date.Now.Year.ToString & "_" & Date.Now.Month.ToString & "_" & Date.Now.Day & ".csv"
            Dim cd = New System.Net.Mime.ContentDisposition With {.FileName = filename, .Inline = False, .DispositionType = "attachment"}
            Response.AppendHeader("Content-Disposition", cd.ToString)
            Return File(d, "text/csv", filename)




        End Function
  ' GET: /Reports
        <Authorize()> _
        Function Index(ByVal btnSearch As String, ByVal data As ReportsModel) As ActionResult

            data.DrawingEfficiencyWeeklyData = New DrawingEfficiencyWeeklyData
            data.DrawingEfficiencyPeriodData = New DrawingEfficiencyPeriodData
            data.DrawingEfficiencyYearlyData = New DrawingEfficiencyYearlyData
            data.DrawingEfficiencyYearlyMeanData = New DrawingEfficiencyYearlyMeanData
            data.DrawingEfficiencySummaryData = New DrawingEfficiencySummaryData
            data.ToleranceOverrideReportData = New ToleranceOverrideReportData
            data.TareDetailReportData = New TareDetailReportData

            Dim var = db.GetGLCYears
            Dim var2 = db.GetGLCYears
            Dim var3 = db.GetGLCYears
            Dim var4 = db.GetGLCYears

            Dim allList As New SelectListItem With {.Value = 0, .Text = "All"}
            Dim BonusList As New SelectListItem With {.Value = 1, .Text = "Bonus"}
            Dim OtherList As New SelectListItem With {.Value = 2, .Text = "Other"}

            Dim categoryList As New List(Of SelectListItem)
            categoryList.Add(allList)
            categoryList.Add(BonusList)
            categoryList.Add(OtherList)

            data.DrawingEfficiencyYearlyMeanData.CategoryList = categoryList
            data.DrawingEfficiencyYearlyMeanData.YearList = var4.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
            data.DrawingEfficiencyWeeklyData.YearList = var.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
            data.DrawingEfficiencyPeriodData.YearList = var2.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})
            data.DrawingEfficiencyYearlyData.YearList = var3.Select(Function(i) New SelectListItem With {.Value = i.Y, .Text = i.Y})

            Select Case btnSearch

                Case Is = "Search"
                    Return (SearchProductionReport(data))
                Case Is = "Export Data"
                    Return ExportProductionReportData(data)
                Case Else
                    Return View(data)
            End Select

            Return View(data)
        End Function

Basically my form sends the ajax response to div which holds a partial view but I have another submit button that uses the same data to generate a csv file. I cannot get this file to download it simply outputs it into the div. can anyone help or guide the right direction.. I have tried actionlinks but it will never persist my model to the database i can't use html.beginforms because i can't set a target div to load the partial view into.