[英]How to add parameters to a @Url.Action() call from JavaScript on click
我有一個鏈接,當點擊時需要調用控制器操作與某些必須通過JavaScript檢索的數據。 該操作將返回FileStreamResult。
我查看了@ Url.Action,但我無法弄清楚如何(或者甚至)我可以傳遞必須通過JS檢索的值字典內容。
然后我從點擊處理程序中獲取了$ .post。 我遇到的問題是我不知道該怎么做才能成功:function()將文件流結果返回給用戶。 或者即使我可以。
所以任何有關你如何做這樣的事情的幫助都會很棒..
然后我從點擊處理程序中獲取了$ .post。 我遇到的問題是我不知道該怎么做才能成功:function()將文件流結果返回給用戶。 或者即使我可以。
究竟。 你不能對javascritpt中的接收字節做很多事情:顯然你不能將它保存在客戶端計算機上,也不能將它傳遞給客戶端上的某個外部程序。 因此,不要調用應該使用AJAX返回文件的操作。 對於這些操作,您應該使用普通鏈接:
@Html.ActionLink("download file", "download", new { id = 123 })
並讓用戶決定如何處理該文件。 您可以使用Content-Disposition
標頭進行播放,並將其設置為inline
或attachment
具體取決於您是希望使用瀏覽器內的默認關聯程序打開文件,還是使用“保存文件”對話框提示用戶。
更新:
我似乎誤解了這個問題。 如果要將參數附加到現有鏈接,可以在javascript中訂閱click事件,並通過將必要參數附加到查詢字符串來修改href:
$(function() {
$('#mylink').click(function() {
var someValue = 'value of parameter';
$(this).attr('href', this.href + '?paramName=' + encodeURIComponent(someValue));
return true;
});
});
我不會使用帖子,而是在鏈接的點擊處理程序上使用JQuery來調用控制器操作。 這假設action方法返回FileStreamResult並設置正確的內容類型,以便瀏覽器解釋結果並相應地呈現它。
使用您的方法,您必須在帖子的onSuccessHandler中解釋如何呈現生成的流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.