通过html.actionlink传递javascript值

时间:2018-09-25 08:31:43

标签: javascript c# html actionlink html.actionlink

我正在开发导出函数,我需要通过@Html.ActionLink将javascript代码中可用的一些值传递给控制器​​。基本上,用户将选择开始日期,结束日期和阶段号,然后单击按钮将整个表导出到Excel。我在下面附加了js,html,cs文件的代码。

js代码:

    <script type="text/javascript">

        $(document).ready(function () {
            $("#departing").datepicker({ dateFormat: 'yy-mm-dd' });
            $("#returning").datepicker({ dateFormat: 'yy-mm-dd' });
            $("button").click(function () {
                var selected = $("#dropdown option:selected").text();
                var departing = $("#departing").val();
                var returning = $("#returning").val();

            });
        });

 var selPhaseNumber = "A";


    $(document).ready(function () {
        //fetch and bind the year dropdown list
        $('input[type=radio][name=rdbPhase]').change(function () {
            if ($(this).val() == "Phase I") {
                selPhaseNumber = "I";
            }
            else if ($(this).val() == "Phase II") {
                selPhaseNumber = "II";
            }
            else {
                selPhaseNumber = "A";
            }

        })
    })

    </script>

html代码:

<div class="col-lg-6">                
<div class="col-lg-3">@Html.ActionLink("Export to Excel", "ExportSubmittedTicketToExcel", "ExportExcel", null, new { @class = "btn btn-primary", @id = "btnExport"})</div>
</div>

(通话应该是这样的) (api/ProjectBilling/SubmittedExportBillDetails/" + startdate + '/' + enddate + '/' + selPhaseNumber

控制器代码:

[Route("ExportExcel/ExportSubmittedTicketToExcel/")]
        public ActionResult ExportSubmittedTicketToExcel(string MemberName)
        {
            try
            {
                if (System.Web.HttpContext.Current.Session["DisplayName"] != null)
                {
                    List<ExportExcelModelSubmitted> Result = new List<ExportExcelModelSubmitted>();
                    using (var client = new HttpClient())
                    {
                        int UserID = Convert.ToInt32(System.Web.HttpContext.Current.Session["CurrentUserID"]);
                        client.BaseAddress = new Uri(WebApiURL);
                        client.DefaultRequestHeaders.Accept.Clear();
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage response = client.GetAsync("api/ProjectBilling/SubmittedExportBillDetails/" + startdate + '/' + enddate + '/' + selPhaseNumber).Result;

                        if (response.IsSuccessStatusCode)
                        {
                            Result = response.Content.ReadAsAsync<List<ExportExcelModelSubmitted>>().Result;
                        }
                        else
                        {
                            string returncode = response.StatusCode.ToString();
                            return Content("<script language='javascript' type='text/javascript'>alert('" + returncode + "');</script>");
                        }
                    }

                    DataTable dt = new DataTable();
                    dt = Result.ToDataTable();

                    MemoryStream stream = new MemoryStream();
                    using (ExcelPackage pck = new ExcelPackage(stream))
                    {
                        ExcelWorksheet ws = pck.Workbook.Worksheets.Add("BillingDetails");
                        ws.Cells["A1"].LoadFromDataTable(dt, true);
                        ws.Cells.AutoFitColumns();

                        using (ExcelRange rng = ws.Cells[1, 1, 1, dt.Columns.Count])
                        {
                            rng.Style.Font.Bold = true;
                            rng.Style.Fill.PatternType = ExcelFillStyle.Solid;
                            rng.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(79, 129, 189));
                            rng.Style.Font.Color.SetColor(System.Drawing.Color.White);
                        }
                        pck.SaveAs(stream);
                        Response.Clear();

                        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                        Response.AddHeader("Content-Disposition", "attachment;filename=SubmittedBilling.xls");

                        Response.BinaryWrite(stream.ToArray());
                        Response.End();
                    }

                    return View();
                }
                else
                {
                    return RedirectToAction("Login", "Home");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

1 个答案:

答案 0 :(得分:0)

您也可以通过Ajax Call做到

[Route("ExportExcel/ExportSubmittedTicketToExcel/")]
public ActionResult ExportSubmittedTicketToExcel(datetime startDate,datetime endDate,string phaseNumber)
{   
    //logic
    string fullPath = Path.Combine(Server.MapPath("~/MyFiles"), file);
        return File(fullpath, "application/vnd.ms-excel", file);
}

$ajax({
    cache: false,
    url: '/ExportExcel/ExportSubmittedTicketToExcel',
    data: {'startDate':startdate,'endDate':enddate,'phaseNumber':selPhaseNumber}
    success: function (data){
    window.location = data.fullpath;
    }
})