【问题标题】:What is the proper way of opening a save as dialog when a button is clicked on site?在网站上单击按钮时打开另存为对话框的正确方法是什么?
【发布时间】:2016-07-21 13:41:40
【问题描述】:

~编辑更多信息~

当在另存为对话框中单击保存按钮时,我有 3 种不同的文件格式可供用户选择。

需要保存的数据已经存储在网站后端(因此表单中没有任何需要发送到后端的数据)。

因此,我是否在前端(html、javascript)上触发一个函数,该函数调用后端(mvc 控制器函数)上的一个函数,该函数使用数据输出另存为对话框并可以选择保存在 3不同的格式。还是我在前端触发一个函数从后端获取数据并在前端输出另存为对话框(使用javascript/html)。

~结束编辑~

单击网站上的按钮时打开另存为对话框的正确方法是什么?

似乎使用 javascript 不是打开另存为对话框的正确方法。我目前正在使用 MVC,所以问题是我是否有一个按钮可以触发后端中的功能(C# 控制器功能)以打开另存为对话框?

我似乎无法找到实现保存按钮的正确(最佳)方法的直接信息,因此非常感谢任何信息!

【问题讨论】:

  • 另存为对话框有什么用?
  • ^ + 你不能从 C# 代码触发任何前端(即对话框),因为它在服务器上运行。
  • 为什么 Javascript 不是执行此操作的正确方法?我想,这是唯一的方法。即使是服务器端实现也会以某种方式使用 Javascript。请详细说明原因。
  • @epascarello & vivek 我添加了更多信息。对不起,我应该更清楚!
  • 前端不需要花哨的东西......可以像使用将输出为文件的服务器路径链接一样简单

标签: javascript c# jquery file model-view-controller


【解决方案1】:

将保存按钮发布到 FileResult 控制器操作。用户是否获得另存为对话框,或者文件只是保存到默认下载目录,取决于用户的浏览器设置。

    public FileResult DownloadFile(int fileId)
    {
        byte[] fileContentByteArray = YourMethodHere(fileId);
        return File(fileContentByteArray, "MIME type goes here", "Suggested file name goes here");
    }

【讨论】:

  • 如果我想强制保存对话框,因为用户在保存时可以选择 3 种不同的格式?
  • 三种格式是什么?您是否需要为每个文件提供不同的文件内容?如果我这样做,我会给用户一组单选按钮以在点击保存之前选择格式,或者为每种格式提供单独的保存按钮。
猜你喜欢
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
相关资源
最近更新 更多