繁体   English   中英

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

[英]How to pass current Url with query strings into Html.ActionLink() function in MVC

https://www.willistowerswatson.com/en/press页面上,select“服务”方面的“交换解决方案”,请注意查询字符串如何更改为:

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 class 中成功调用了我的public void ReturnRSS(string itemId) function。

我的挑战是,我还想发送ReturnRSS(string itemId) function,当前页面 URL 及其查询字符串,它可以在呈现 HTML 并选择构面后更改。 换句话说,一旦选择了“服务”方面的“Exchange 解决方案”,并单击了“RSS 订阅”链接,我还想发送到“ReturnRSS”function, &f:@businesssegmentsubl_coveofacets_1=[Exchange%20Solutions]参数。

我怎样才能做到这一点? 除了@Html.ActionLink之外,我应该打电话给另一个 function 吗?

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

只渲染你知道当时可以渲染的内容(即路由+项目ID)(自定义扩展名?)并通过JS function调整rest。

前任:

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

考虑另一种使用 Javascript/JQuery 且不使用 Actionlink 的方法。

$.fn.GetQueryString = function () {
    var queryString = window.location.search;
    return queryString;
};

$.fn.GoToPage = function (controller, action) {
    var qs = $.fn.GetQueryString();
    var url = baseUrlWWW + '/' + controller + '/' + action + qs;
    window.location.href = url;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM