繁体   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