繁体   English   中英

用jQuery调用MVC控制器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM