2017-06-12 48 views
2

https://www.willistowerswatson.com/en/press页面,在“服务”方面选择“交换解决方案”,并注意如何查询字符串更改为:如何通过与查询字符串当前URL到Html.ActionLink()函数在MVC

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 class SearchController : GlassController类中调用我的public void ReturnRSS(string itemId)函数。

我的问题是,我还想发送ReturnRSS(string itemId)函数,当前页面带有其查询字符串,它可以在HTML呈现后改变,并且选择方面。换句话说,一旦选择了“服务”方面的“Exchange解决方案”并点击了“通过RSS订阅”链接,我还想发送到“ReturnRSS”功能&f:@businesssegmentsubl_coveofacets_1=[Exchange%20Solutions]参数。

我该怎么做?我是否应该拨打@Html.ActionLink以外的其他功能?

回答

1

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

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

例:

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