[英]Call mvc controller with jQuery
我对mvc和jQuery ...以及一般而言的Web开发都是很新的。 最近,我接管了一个由开发人员设计的网站的控制权,而我们不得不放弃该控制权,出于我不愿透露其原因的原因,需要更改他使用的树形视图控件。 但是基本上,我需要能够在树视图中的节点的click事件上下载资源。 我知道如何处理事件,但我不知道如何通过jquery对我的mvc控制器进行调用。 我需要调用以下载资源的控制器功能的路径是/ Resources / DownloadResource。 这是它的代码:
public ActionResult DownloadResource(string id)
{
var resource =
_resourceService.GetResourceQuery(new Specification<Resource>(r => r.ResourceId == new Guid(id))).FirstOrDefault();
return new BinaryResult
{
FileName = resource.FileName,
ContentType = string.Format("application/{0}", Path.GetExtension(resource.FileName)).Replace(".", ""),
IsAttachment = true,
Data = System.IO.File.ReadAllBytes(resource.FilePath)
};
}
我已经尝试过类似$.post("/Resources/DownloadResourceLink", { id: value });
当我逐步执行时,所有内容都获得正确的值,但没有下载。 任何帮助将不胜感激!
要从浏览器触发下载,您需要使用同步方式而不是ajax。
看一下这个问题: 使用JQuery将文件下载到ASP.NET MVC应用程序中的客户端上
<script type="text/javascript">
$(document).keypress(function (e)
{
if (e.which == 13)
{
location.href = '@Url.Action("ActionName", "Controllername")';
}
});
</script>
尝试看一下。基本上,您只是将MVC操作地址称为ajax函数的url属性。
问题可能是您如何传递ID。 以我的经验,我必须将数据附加到url (/ action / controller / id路由)中
$.post("/Resources/DownloadResourceLink/" + value);
如果那不起作用,我将确保呼叫期望的内容类型对于下载类型是正确的。
如果仍然不能解决问题,则可能是问题所在。
我建议您看一下$.ajax()
。 默认值为获取,您可能需要下载该获取。 我不知道内容类型需要是什么(您应该能够从action方法推断出来),但是您的调用看起来像这样。
$.ajax({
url: '/Resources/DownloadResourceLink',
params: { id }
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.