I can't download my template. It return success message from IndexModel but doesn't download excel file.
when it read this line window.location = "Templates//" + response.ExcelTemplateName; in javascript it gives
This localhost page can’t be found
No webpage was found for the web address: https://localhost:7137/Templates//Test.xlsx
Please see below javascript code
function onClick(e) {
var companyName = $("#companyName").data("kendoComboBox");
alert(companyName.text())
if ($("#companyName").val() == 0) {
if (companyName.text() == "Inside Sales UK") {
window.location = "Templates//Manual Upload Template Inside Saless.xlsx"
return false;
}
}
else {
$.ajax({
type: "POST",
//dataType: "json",
//traditional: true,
url: "/Index?handler=Download",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: { companyId: $("#companyName").val() },
success: function (response) {
alert(response.ExcelTemplateName) // working fine.
window.location = "Templates//" + response.ExcelTemplateName;
return false;
},
failure: function (response) {
alert(response.responseText);
}
})
}
}
see below
.IndexModel page model
public ActionResult OnPostDownload(int companyId)
{
var excelTemplate = new List<ExcelTemplates>();
excelTemplate = _sqlGetData.GetExcelTemplate(companyId);
return new JsonResult(excelTemplate.FirstOrDefault());
}
@page
@model IndexModel
@using Kendo.Mvc.UI
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@{
ViewData["Title"] = "Home page";
}
@* @Html.HiddenFor(m => m.CompanyID, new { @id = "companyId" })
*@
@{
ViewBag.Title = "Computacenter End User Feedback Upload Facility";
}
@Html.AntiForgeryToken()
<div class="upload">
<div class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h2>@ViewBag.Title</h2>
</hgroup>
<p>
The List box displays all the upload types you have been allocated to use. Use this form to upload files.
</p>
</div>
</div>
<div class="editor-label">
@* <h3>Use this form to upload files.</h3>*@
</div>
<br />
<div class="editor-field">
@* @Html.Partial("_UploadCompanyCombo",Model.companies)*@
<br />
<div class="editor-field">
<div>
@(
Html.Kendo().ComboBox()
.Filter("contains")
.Name("companyName")
.Placeholder("Select upload type")
.DataTextField("CompanyName")
.DataValueField("CompanyID")
.DataSource(d => d.Custom().Transport(t => t.Read(r => r.Url("Index?handler=Read")
))
.ServerFiltering(true)
)
.Events(e => e.Change("onSelected"))
)
</div>
<div style="margin-top:10px">
<span style="margin-left: 0px">
@(Html.Kendo().Button()
.Name("ExportTemplate")
.Content("Export Template")
.HtmlAttributes(new { type = "button" })
.Events(ev => ev.Click("onClick"))
)
</span>
</div>
</div>
</div>
<div id="fileUpload">
<div class="editor-label">
<h3>Now select the files to upload.</h3>
</div>
<div>
@(Html.Kendo().Upload()
.Name("Upload")
.Multiple(false)
.Async(a => a
.Save("UploadCFile", "Home")
.Remove("Remove", "Upload")
.AutoUpload(false)
.SaveField("files"))
.Events(e => e.Upload("onUpload").Complete("onComplete"))
)
</div>
<div style="margin-top:10px">
<span style="margin-left: 15px; ">
@(Html.Kendo().Button()
.Name("refreshPage")
.Content("Upload another file")
.HtmlAttributes(new { type = "button" })
.Events(ev => ev.Click("onClickRefresh")))
</span>
</div>
</div>
</div>
<script type="text/javascript">
$("#Document").ready(function () {
$("#fileUpload").hide();
$("#ExportTemplate").hide();
$("#refreshPage").hide();
});
function onSelected(e) {
if ($("#companyName").val()) {
$("#ExportTemplate").show();
$("#fileUpload").show();
} else {
$("#ExportTemplate").hide();
$("#fileUpload").hide();
}
}
function onComplete(e) {
$("#refreshPage").show();
}
function onUpload(e) {
e.data = { id: $("#companyName").val() };
var files = e.files;
var allowedFileExtensions = '@Configuration.GetSection("AppSettings")["AllowedFileExtensions"]'; @*@System.Configuration.ConfigurationManager.AppSettings["AllowedFileExtensions"]';*@
var ErrAttachmentFileName = '@Configuration.GetSection("AppSettings")["ErrAttachmentFileName"]'; @*'@System.Configuration.ConfigurationManager.AppSettings["ErrAttachmentFileName"]'*@
$.each(files, function () {
if (allowedFileExtensions.indexOf(this.extension.toLowerCase()) === -1) {
//if (this.extension.toLowerCase() != ".xlsx" && this.extension.toLowerCase() != ".json") {
// alert("Only .xlsx files can be uploaded!")
alert(ErrAttachmentFileName)
e.preventDefault();
}
});
}
function onClickRefresh(e) {
location.reload(true);
}
function onClick(e) {
var companyName = $("#companyName").data("kendoComboBox");
alert(companyName.text())
if ($("#companyName").val() == 0) {
if (companyName.text() == "Inside Sales UK") {
window.location = "Templates//Manual Upload Template Inside Saless.xlsx"
return false;
}
}
else {
$.ajax({
type: "POST",
dataType: "json",
traditional: true,
url: "/Index?handler=Download",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: { companyId: $("#companyName").val() },
success: function (response) {
alert(response.ExcelTemplateName)
window.location = "Templates//" + response.ExcelTemplateName;
return false;
},
failure: function (response) {
alert(response.responseText);
}
})
}
}
</script>
using CC.GRP.eCSQWeb.Core.Models;
using CC.GRP.eCSQWeb.Core.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Text;
namespace CC.GRP.eCSQWeb.Core.RazorPages.Pages
{
public class IndexModel : PageModel
{
//private readonly ILogger<IndexModel> _logger;
private readonly IECSQADHelper _helper;
private readonly IECSQGetData _sqlGetData;
private readonly IECSQCreate _sqlCreate;
private readonly IECSQUpdate _sqlUpdate;
private readonly IECSQDelete _sqlDelete;
public List<UploadCompany> companies { get; set; }
public IndexModel(IECSQADHelper helper, IECSQGetData sqlGetData, IECSQCreate sqlCreate, IECSQUpdate sqlUpdate, IECSQDelete sqlDelete)
{
_helper = helper;
_sqlGetData = sqlGetData;
_sqlCreate = sqlCreate;
_sqlUpdate = sqlUpdate;
_sqlDelete = sqlDelete;
}
public void OnGet()
{
}
public JsonResult OnGetRead()
{
//List<UploadCompany> companies = new List<UploadCompany>();
companies = _sqlGetData.GetUploadCompany();
return new JsonResult(companies.Select(c => new { CompanyID = c.CompanyID, CompanyName = c.CompanyName }));
}
public ActionResult OnPostDownload(int companyId)
{
var excelTemplate = new List<ExcelTemplates>();
excelTemplate = _sqlGetData.GetExcelTemplate(companyId);
return new JsonResult(excelTemplate.FirstOrDefault());
}
}
}