【问题标题】:How to pass current Url with query strings into Html.ActionLink() function in MVC如何将带有查询字符串的当前 URL 传递给 MVC 中的 Html.ActionLink() 函数
【发布时间】:2017-11-14 03:39:13
【问题描述】:

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

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) 函数。

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

我该怎么做?我是否应该调用@Html.ActionLink 以外的其他函数?

【问题讨论】:

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


    【解决方案1】:

    考虑另一种使用 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;
    };
    

    【讨论】:

      【解决方案2】:

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

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

      例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 2022-11-04
        • 1970-01-01
        • 2017-05-05
        • 2019-06-12
        • 1970-01-01
        相关资源
        最近更新 更多