2011-01-28 93 views
1

我是mvc和jQuery的新手......并且对于一般的web开发来说真的很新颖。我最近接管了一个由开发人员设计的网站的控制权,我们必须放手,并且他所使用的树视图控件需要更改,原因是我不会进入这里。但基本上我需要能够在树视图中的节点的点击事件上下载资源。我知道如何处理事件,但我无法弄清楚如何通过jquery调用我的mvc控制器。我需要调用以下载资源的控制器功能的路径是/ Resources/DownloadResource。下面是它的代码:用jQuery调用mvc控制器

 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 });当我步,一切都越来越正确的价值观,但没有下载。任何帮助肯定会感激!

回答

0

试试看This 基本上你只是调用MVC action地址作为你的ajax函数的url属性。

0

问题可能是你如何通过id。根据我的经验,我必须将数据添加到URL (/动作/控制器/ ID的路由)

$.post("/Resources/DownloadResourceLink/" + value); 

如果不行,我会确保在content type呼叫被期待是正确的下载类型。

如果仍然不这样做,那么问题可能是帖子。

我建议你看看$.ajax()。默认值为get,您可能需要下载。我不知道内容类型需要什么(你应该能够从操作方法中推断出),但是你的调用看起来像这样。

$.ajax({ 
    url: '/Resources/DownloadResourceLink', 
    params: { id } 
}); 
2
<script type="text/javascript"> 

    $(document).keypress(function (e) 
    { 
     if (e.which == 13) 
     { 
      location.href = '@Url.Action("ActionName", "Controllername")'; 
     } 
    }); 

</script>