在 https://www.willistowerswatson.com/en/press
页面上,在“服务”方面选择“交换解决方案”,并注意查询字符串如何更改为:
https://www.willistowerswatson.com/en/press#sort=%40fdisplayz45xdate47442%20descending&f:@businesssegmentsubl_coveofacets_1=[Exchange%20Solutions]
然后,当您单击“通过 RSS 订阅”按钮时,将打开一个新选项卡,其中保留了那些查询字符串参数(由构面选择生成)。
既然我们正在将 Coveo 搜索转换为 MVC View ,我想复制此行为。在我的 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" })
代码在我的 View 源中生成的 HTML 是这样的:
<a href="/api/sitecore/Search/ReturnRSS?itemId=%7BE1EB2D45-066F-4F8F-8B9B-049E7918A034%7D" target="_blank">Subscribe by RSS</a>
它在我的 public class SearchController : GlassController
类中成功调用了我的 public void ReturnRSS(string itemId)
函数。
我的挑战是我还想将当前页面 URL 及其查询字符串发送到 ReturnRSS(string itemId)
函数中,它可以在呈现 HTML 后更改,并且构面是选择。换句话说,一旦选择了“服务”方面的“交换解决方案”,并单击了“通过 RSS 订阅”链接,我还想发送到“ReturnRSS”功能,&f:@businesssegmentsubl_coveofacets_1= [Exchange%20Solutions]
参数。
我该怎么做?我是否应该调用 @Html.ActionLink
以外的其他函数?
最佳答案
您不必使用操作链接。 显然,您不知道在呈现服务器端时要发送的 URL。
只渲染你知道当时可以渲染的内容(即路由 + 项目 ID)(自定义扩展?)并通过 JS 函数调整其余部分。
例如:
button.onClick = () => {
window.open(getURL(), "_blank");
}
关于javascript - 如何将带有查询字符串的当前 Url 传递给 MVC 中的 Html.ActionLink() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503205/