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