Я разрабатываю функцию экспорта, где мне нужно передать некоторые значения, доступные в коде javascript, в контроллер через @Html.ActionLink
.Обычно пользователь выбирает дату начала, дату окончания и номер фазы, который при нажатии на кнопку экспортирует всю таблицу в Excel.Ниже я прилагаю код js, html, cs файлов.
js code:
<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 code:
<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;
}
}