2011-01-28 103 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>