首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何提示用户在MVC 4 c#中从本地主机保存访问文件

如何提示用户在MVC 4 c#中从本地主机保存访问文件
EN

Stack Overflow用户
提问于 2015-06-30 00:02:01
回答 1查看 359关注 0票数 0

我试图提示用户在单击按钮时保存access数据库文件。

下面是我的控制器和视图。

主计长:

代码语言:javascript
运行
复制
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;   
        }

查看:

代码语言:javascript
运行
复制
    <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数据库模板。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 00:17:31

您不应该尝试使用AJAX下载文件。相反,只需从表单中的按钮中定期发布一篇文章。用HttpPost装饰你的动作方法。

代码语言:javascript
运行
复制
[HttpPost]
public ActionResult BlankTemplate(string startyear, string endyear)
{
    // put the code you had before here and return a FileResult
}

然后,只需使用带有submit按钮的常规旧表单来获取它。因为您需要从日历中获取日期,所以您必须执行一些jQuery来获取它们并将它们放入隐藏的字段中。

在你看来:

代码语言:javascript
运行
复制
@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:

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31127464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档