相同的查询字符串但链接不同

时间:2016-09-15 23:58:42

标签: c# asp.net

我有一个场景,我的每个页面都有超过30-35个锚点元素,每个页面都指向不同的URL。但我希望他们所有人都拥有相同的查询字符串(谷歌分析UTM)。现在有趣的部分是URL不会每天更改它们是相同的但查询字符串每天都在变化,我在后面的代码中计算它并且本身就很好。我想要做的是以有效的方式添加计算的查询字符串,而不使用Javascript。我知道我可以将查询字符串值存储在隐藏变量中,然后循环遍历JS中的锚点并添加查询字符串,但我不能自由地在页面上使用JS。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

猜猜你可以遍历所有链接并附加查询字符串,可能是在PreRender事件期间。

var queryString = ComputeQueryStringForGoogle();
foreach (var control in this.Controls)
{
    var link = control as Hyperlink;
    if (link == null) continue;
    link.NavigateUrl += queryString;
}

或者,如果你喜欢这种风格,

var queryString = ComputeQueryStringForGoogle();
foreach (var control in this.Controls)
{
    if (control is Hyperlink)
    {
        ((Hyperlink)control).NavigateUrl += queryString;
    }
}
哎呀,为什么不是第三种方式(我总是在学习新东西!)

var queryString = ComputeQueryStringForGoogle();
foreach (var control in this.Controls.OfType<Hyperlink>)
{
    control.NavigateUrl += queryString;
}

或者如果你想尝试一些LINQ怎么样

var queryString = ComputeQueryStringForGoogle();
this.Controls.Where(t => t is Hyperlink).Select(c => { c.NavigateUrl += queryString; return c }).ToList();

希望这不会有点过分。