如何将带有查询字符串的当前Url传递给MVC中的Html.ActionLink()函数

时间:2017-06-12 15:27:36

标签: javascript asp.net-mvc asp.net-mvc-4 razor html.actionlink

https://www.willistowerswatson.com/en/press页面上,选择" Exchange Solutions"在"服务" facet,并注意查询字符串如何更改为:

https://www.willistowerswatson.com/en/press#sort=%40fdisplayz45xdate47442%20descending&f:@businesssegmentsubl_coveofacets_1=[Exchange%20Solutions]

然后,当您点击"按RSS订阅"按钮,打开一个新选项卡,其中保留了那些查询字符串参数(由构面选择生成)。

我想复制此行为,因为我们正在将Coveo搜索转换为MVC视图。在我的Search.cshtml文件中,对于"按RSS订阅"链接,我有这个代码:

@Html.ActionLink(Translate.TextByDomain(StringConstants.DictionaryDomains.WTW, "Subscribe by RSS"), "ReturnRSS", "Search", new { @itemId = Sitecore.Context.Item.ID.ToString() }, new { target = "_blank" })

代码在我的视图源中生成的HTML是:

<a href="/api/sitecore/Search/ReturnRSS?itemId=%7BE1EB2D45-066F-4F8F-8B9B-049E7918A034%7D" target="_blank">Subscribe by RSS</a>

并成功调用public void ReturnRSS(string itemId)课程中的public class SearchController : GlassController函数。

我的挑战是我还要发送到ReturnRSS(string itemId)函数,当前页面URL WITH ITS QUERY STRINGS,它可以在HTML呈现之后更改,并且选择了facet。换句话说,一旦&#34; Exchange Solutions&#34;在&#34;服务&#34;选择了facet,并且&#34;通过RSS订阅&#34;链接被点击,我也想发送到&#34; ReturnRSS&#34; function,&f:@businesssegmentsubl_coveofacets_1=[Exchange%20Solutions]参数。

我该怎么做?我应该调用@Html.ActionLink以外的其他功能吗?

1 个答案:

答案 0 :(得分:1)

您不必使用动作链接。 显然,在渲染服务器端时,您不知道要发送的URL。

仅渲染您当时可以呈现的内容(即路线+项目ID)(自定义扩展名?),并通过JS函数调整其余内容。

例如:

button.onClick = () => {
   window.open(getURL(), "_blank");
}