簡體   English   中英

如何在點擊時從JavaScript添加參數到@ Url.Action()調用

[英]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標頭進行播放,並將其設置為inlineattachment具體取決於您是希望使用瀏覽器內的默認關聯程序打開文件,還是使用“保存文件”對話框提示用戶。


更新:

我似乎誤解了這個問題。 如果要將參數附加到現有鏈接,可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM