【问题标题】:C#/Razor replace second question mark with ampersand in query stringC#/Razor 在查询字符串中用 & 号替换第二个问号
【发布时间】:2020-10-01 17:44:08
【问题描述】:

我正在使用 C#,并且我有一个使用开放文本字段的 CMS。我正在手动进行重定向,在此之上附加了一个查询字符串,但我有编辑器将 UTM 放入 URL 中。我正在尝试跟踪重定向/虚 URL,以便我们看到它们的成功,但是编辑器正在添加 UTM,当我传输重定向时,我将“?ref =”添加到他们的 URL 到第二个 URL。
我需要知道如何替换查询字符串中的任何后续问号。
CMS 看到第二个问号并自动重定向到主页,因为我认为它试图对 URL 进行智能处理,而第二个问号导致它认为 URL 无效。

所以我得到的原始 URL 看起来像这样:

www.mysite.com/somepage?utm_source=foo&utm_medium=bar

然后它会重定向,所以我可以跟踪 URL,它现在看起来像这样

www.myothersite.com/this-other-page?ref=www.mysite.com/somepage?utm_source=foo&utm_medium=bar

所以我想做的是在第二个 URL 中用 & 号替换第二个问号。我将如何只做第二个或后续的而不摆脱第一个?

我正在使用 Javascript 在视图中进行重定向。

到目前为止我的代码

@{
var currentPageUrl = HttpContext.Current.Request.Url.AbsoluteUri;
}
<script type="text/javascript">
  
setTimeout(function () {
   window.location.href = '@Model.Content.GetPropertyValue("externalRedirectURL")?ref=@currentPageUrl'; 
}, 200); //will call the function after 2 secs

 </script>

【问题讨论】:

标签: javascript c# query-string


【解决方案1】:

我现在使用 HTML.Raw 和 Json.Ecode 找到了答案。
当我在实际的 Javascript 构建字符串中执行通用 .Replace 时,出于某种原因, .Replace("?", "&") 正在向查询字符串中的任何内容添加另一个与符号,并且查询字符串中已经存在与符号。不是我所期望的。
无论如何,这是我的答案

 <script>
   var currentP = @Html.Raw(Json.Encode(@currentPageUrl.Replace("?","&amp;")));
  
setTimeout(function () {
   window.location.href = '@Model.Content.GetPropertyValue("externalRedirectURL")' + '?ref=' + currentP; 
   
}, 200); //will call the function after 2 secs
 </script>

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2021-03-25
    • 2013-08-13
    • 2011-12-21
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多