如何使用Jquery/Ajax在MVC控制器中将参数传递给CSV导出方法
在我的视图中,我有一个按钮,用于在当前数据视图中导出CSV。这是指向控制器中方法的简单链接如何使用Jquery/Ajax在MVC控制器中将参数传递给CSV导出方法,jquery,ajax,csv,fileresult,Jquery,Ajax,Csv,Fileresult,在我的视图中,我有一个按钮,用于在当前数据视图中导出CSV。这是指向控制器中方法的简单链接 <input type="button" value="Exporter" id="btnexport" class="btnsearch" onclick="location.href='@Url.Action("ExportCSV", "AuditAddins")'" /> 它工作得很好。但是我需要向这个方法发送一个参数,因为我有三个设计模式,每个模式都有自己的列顺序。因此,我创建了一个
<input type="button" value="Exporter" id="btnexport" class="btnsearch" onclick="location.href='@Url.Action("ExportCSV", "AuditAddins")'" />
它工作得很好。但是我需要向这个方法发送一个参数,因为我有三个设计模式,每个模式都有自己的列顺序。因此,我创建了一个jquery/ajax脚本来发送参数
$("#btnexport").click(function () {
var index = $('#CritID').find('option:selected').val();
var d = { chx: index}
$.ajax({
url: "/AuditAddins/ExportCSV",
type: "POST",
data: d,
success: function (data) {
alert("Export ok !");
},
});
});
主要目标是改变出口方式,如下所示:
public void ExportCSV(int chx)
{
...
switch (chx)
{
case 1:
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", "Date", "AddinName", "IsAddinActive", "UserName", "PcName"));
break;
case 2:
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", "Date", "UserName", "PcName","AddinName", "IsAddinActive"));
break;
...
}
问题是我没有IE下载窗口了。我尝试过actionresult方法,它也不起作用 您不必使用
POST
发送参数
相反,您可以向GET
请求添加一个参数:
/AuditAddins/ExportCSV?index=2
如果未提供参数,则默认为1
要发送多个参数,可以使用&
将它们分开:
/AuditAddins/ExportCSV?index=2¶m2=123
这也可以解决下载窗口的问题。您不必使用
POST
发送参数
相反,您可以向GET
请求添加一个参数:
/AuditAddins/ExportCSV?index=2
如果未提供参数,则默认为1
要发送多个参数,可以使用&
将它们分开:
/AuditAddins/ExportCSV?index=2¶m2=123
这也可以解决下载窗口的问题。我已经尝试过:var url=“/AuditAddins/ExportCSV?chx=1”;$。get(url,null,函数(数据){alert(“done”);});但它不起作用。@mrplush-您是否也在服务器端处理/处理该参数?是的。我有断点,我看到paramater可以工作,csv也可以创建。但是我不明白为什么IE小下载弹出窗口没有出现。@mrplush-这很奇怪-它应该和没有参数的情况下工作完全一样。csv是否会显示在浏览器中?否。。。什么也没发生。我正在使用一个.done(函数(result){alert(“done”);});我是否需要更改警报(“完成”)?我确实需要Jquery来获取mode dropdownlist的值(这是参数)。get(url,null,函数(数据){alert(“done”);});但它不起作用。@mrplush-您是否也在服务器端处理/处理该参数?是的。我有断点,我看到paramater可以工作,csv也可以创建。但是我不明白为什么IE小下载弹出窗口没有出现。@mrplush-这很奇怪-它应该和没有参数的情况下工作完全一样。csv是否会显示在浏览器中?否。。。什么也没发生。我正在使用一个.done(函数(result){alert(“done”);});我是否需要更改警报(“完成”)?我真的需要Jquery来获取modedropdownlist的值(这是参数)。