[英]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.