我有一个ASP.NET MVC应用程序.在一个页面上,我有一个按钮,允许用户根据用户设置的页面上的某些值(滑块范围,复选框等)下载CSV文件,而无需离开页面.我的Controller类通过返回FileResult的方法返回该文件.
目前,我的javascript onClick方法实现如下,有点jQuery:
function DownloadCSV() {
var url = <%=Action("DownloadCSV", "Controller")%> + '?' +
$.param({
SomeValue: $("#valuefromform").val(),
OtherValue: $("#anothervaluefromform").val(),
...
});
window.location = url;
}
Run Code Online (Sandbox Code Playgroud)
这部分工作得很好,所以问题是:是否可以重写这个方法,以便它"发布"查询而不是使用"获取"查询字符串?
(我已经尝试过使用一个AJAX请求,它可以很好地POST,但是虽然我得到了文件数据,但这是XHR响应的一部分,我无法弄清楚如何将其下载为文件,所以如果有办法这样做也会很棒!)
您可以设置一个表单:
<% using (Html.BeginForm("DownloadCSV", "Controller", null, FormMethod.Post, new { id = "myform" })) { %>
<input type="hidden" id="someValue" name="someValue" value="" />
<input type="hidden" id="otherValue" name="otherValue" value="" />
<% } %>
Run Code Online (Sandbox Code Playgroud)
下载时间只需提交此表格:
function DownloadCSV() {
$('#someValue').val($('#valuefromform').val());
$('#otherValue').val($('#anothervaluefromform').val());
$('#myform').trigger('submit');
}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是完全动态地构建此表单并在提交之前将其注入DOM.
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |