C#学习教程:如何使用AJAX和MVC下载和分享文件){$.ajax({url:"controller/GetFile/",data:{startDate:startDate}...});}C#控制器代码publicvoidGetFile(stringstartDate){varresults=doQuearyWith(startDate);//根据结果创建文件....//我如何告诉服务器进行文件下载?我通常让我的文件下载一个链接,如:下载但在上述情况下,日期是动态的。如果我不使用ajax,使用javascript将参数传递给MVC控制器的首选方法是什么?示例:window.location="mycontroller/GetFile/"+$("#fromDate").val();假设日期是12-25-2012,这将产生mycontroller/GetFile/12/25/2012MVC会将其转换为三个参数吗?我最终做的是从我的javascript中调用我的控制器,例如:varurl="/mycontroller/GetFile?startDate="+$("#mydate").val()+etc...window.location=url;mycontroller.cspublicvoidGetFile(DateTimestartDate){}我最初关注的是日期参数。我不想解析它。您可以使用控制器类的File方法将文件返回给浏览器。以下示例返回一个pdf文件。publicActionResultGetFile(intid){varfileInfo=repositary.GetFileDedetails(id);varbyteArrayOFFile=fileInfo.FileContentAsByteArray();返回文件(byteArrayOFFile,“application/pdf”,“yourFriendlyName.pdf”);假设repository.GetFileDedetails方法从id返回文件的详细信息。您还可以从物理位置(路径)或流返回文件。检查File方法的所有重载并使用适当的方法。这与ajax无关。这是来自浏览器的正常GET请求。使用ActionLink帮助程序,您可以将多个参数传递给控制器??:HtmlHelper.ActionLink(stringlinkText,stringactionName,stringcontrollerName,objectrouteValues,objecthtmlAttributes)所以在您的情况下:@Html.ActionLink("Downloadfile","GetFile","MyController",new{startDate="##"},new{id="mydownloadlink"})使用jQuery,您可以更改带有日期选择器或文本框内容的链接中startDate的值。$("#mydownloadlink").attr("href").replace("##",$("#yourdatetexbox").val);然后,在您的控制器中,只需使用FileResult上的答案之一。希望这对您有所帮助...您的控制器操作方法应该返回FileResult而不是void。并且无需通过AJAX执行此操作——事实上,您不想使用AJAX执行此操作。您需要涉及浏览器,以便它知道向用户显示下载对话框。请参阅以下链接:处理在(jQuery)Ajax调用中返回的ASP.NETMVCFileResult在Asp.NetMVC2中下载文件我希望这会有所帮助。以上就是C#学习教程的全部内容:如何使用AJAX和MVC实现文件下载和分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
