簡體   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