将传入的查询字符串添加到所有传出链接/流量c#

时间:2010-11-01 14:21:25

标签: c# asp.net query-string parameter-passing

如果我有一个名为www.testsite.com的页面,并且我使用url中的查询字符串链接到该页面,是否可以以某种方式将相同的查询字符串附加到所有传出链接/流量?

例如,假设我链接到该页面,如www.testsite.com?parameter1=somevalue 然后,在该页面上,我点击一个链接到例如谷歌,我希望传递参数,所以网址将是www.google.com?parameter1=somevalue。

我知道如何手动执行此操作,但是有一些它可以自动附加到网址吗?就像在发生之前捕获传出请求并添加参数?

谢谢!

埃里克

4 个答案:

答案 0 :(得分:3)

你可以使用jQuery

简单地使用javascript或javascript
$("a").click(function(e){
    e.preventDefault();
    window.location = $(this).attr("href") + window.location.search;
});

应该让你开始

如果你想要一个非jQuery解决方案,你可以只使用javascript查看绑定事件

http://www.digimantra.com/tutorials/change-onclick-function-anchor-tag-javascript/

http://forums.techarena.in/software-development/1308647.htm

答案 1 :(得分:1)

您可以通过httpmodule实施拦截过滤器,该过滤器修改您发回给客户端的html。有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/ff649096.aspx

还有一些例子:
Http Response Filter
SO: Get HTML content for modification

答案 2 :(得分:0)

除非您有一个输出外向链接的中心位置,否则您必须手动执行此操作(可能视觉工作室搜索/替换可以在这里提供帮助,但我会小心,因为您最终可能会更改您没有输入的链接'我想)。

答案 3 :(得分:0)

您可以使用以下命令来使用Query String参数 您可以循环遍历所有查询字符串参数,例如

int loop1, loop2;
// Load NameValueCollection object.
NameValueCollection coll = Request.QueryString; 

// Get names of all keys into a string array. String[] arr1 = coll.AllKeys; 

string parameters = "";

for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{

  parameters += Server.HtmlEncode(arr1[loop1]) + "=" + coll.GetValues(arr1[loop1]);

  for (loop2 = 0; loop2 < arr2.Length; loop2++) 
  {
    parameters += Server.HtmlEncode(arr2[loop2]);

  } 
}

它的基本理念。但是你可以在不知道名字的情况下循环参数。