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

本文关键字:链接 字符串 查询 | 更新日期: 2023-09-27 18:07:20

我有一个场景,我的每个页面都有超过30-35个锚元素,每个锚元素都指向不同的URL。但我希望他们都有相同的查询字符串(谷歌分析UTM)。现在有趣的部分是URL不会每天都改变,它们是相同的,但查询字符串每天都在变化,我在后面的代码中计算它,这本身是好的。我想做的是以一种有效的方式添加计算的查询字符串,而不使用Javascript。我知道我可以将查询字符串值存储在一个隐藏的变量中,然后通过JS中的锚循环并添加查询字符串,但不幸的是,我没有自由在页面上使用JS。

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

我猜您可以遍历所有链接并附加查询字符串,也许在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();

希望这没有过分。