我试图提示用户在单击按钮时保存access数据库文件。
下面是我的控制器和视图。
主计长:
public ActionResult BlankTemplate(string startyear, string endyear)
{
try
{
blankTemplateFile = "C:\\BlankTemplate\\PTPKCalc_BlankTemplate.accdb";
string saveAsFileName = blankTemplateFile;
System.IO.File.Copy(saveAsFileName, blankTemplateFile + "\\" + Strings.Mid(saveAsFileName, Strings.InStrRev(saveAsFileName, "\\") + 1));
byte[] fileBytes = System.IO.File.ReadAllBytes("C:\\BlankTemplate\\PTPKCalc_BlankTemplate.accdb");
string fileName = "PTPKCalc_BlankTemplate.accdb";
Response.AddHeader("Content-Disposition", fileName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
catch { }
return null;
}查看:
<table cellpadding="0" cellspacing="0" border="0" style="width: 100%;">
<tr>
<td style="width: 60%">
Start Year:<br />
@(Html.Kendo().Calendar()
.Name("startcalendar"))
</td>
</table>
<script>
<script>
BlankTemplate = function () {
var start = $("#startcalendar").data("kendoCalendar");
var end = $("#endcalendar").data("kendoCalendar");
var startyear = kendo.parseDate(start.value())
var endyear = kendo.parseDate(end.value(), "G")
$.ajax({
url: _rootUrl + "KcalcImport/BlankTemplate",
data: {
startyear: kendo.toString(new Date(startyear), "d"),
endyear: kendo.toString(new Date(endyear), "d"),
templatetype: "blanktemplate"
},
});
}
</script>只需尝试提示用户保存此access数据库模板。
发布于 2015-06-30 00:17:31
您不应该尝试使用AJAX下载文件。相反,只需从表单中的按钮中定期发布一篇文章。用HttpPost装饰你的动作方法。
[HttpPost]
public ActionResult BlankTemplate(string startyear, string endyear)
{
// put the code you had before here and return a FileResult
}然后,只需使用带有submit按钮的常规旧表单来获取它。因为您需要从日历中获取日期,所以您必须执行一些jQuery来获取它们并将它们放入隐藏的字段中。
在你看来:
@using (Html.BeginForm("BlankTemplate", "ControllerName", FormMethod.Post, new { @id = "accessForm" }))
{
@Html.Hidden("startyear", "", new { id = "startyear" })
@Html.Hidden("endyear", "", new { id = "endyear" })
<input type="submit" value="Submit" />
}jQuery:
<script>
$(function () {
$("#accessForm").submit(function () {
var start = $("#startcalendar").data("kendoCalendar");
var end = $("#endcalendar").data("kendoCalendar");
$("#startyear").val(kendo.parseDate(start.value()));
$("#endyear").val(kendo.parseDate(end.value(), "G"));
});
});
</script>https://stackoverflow.com/questions/31127464
复制相似问题