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