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

将传入查询字符串添加到所有传出链接/流量c#,c#,asp.net,query-string,parameter-passing,C#,Asp.net,Query String,Parameter Passing,如果我有一个名为www.testsite.com的页面,并且我使用url中的查询字符串链接到该页面,是否可以以某种方式将相同的查询字符串附加到所有传出链接/流量 例如,假设我像下面这样链接到该页面www.testsite.com?parameter1=somevalue 然后,在那个页面上,我点击了一个指向谷歌的链接,我希望传递参数,这样url就会是www.google.com?parameter1=somevalue 我知道如何手动执行此操作,但是否有某种方式可以将其自动附加到url?比如在发

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

例如,假设我像下面这样链接到该页面www.testsite.com?parameter1=somevalue 然后,在那个页面上,我点击了一个指向谷歌的链接,我希望传递参数,这样url就会是www.google.com?parameter1=somevalue

我知道如何手动执行此操作,但是否有某种方式可以将其自动附加到url?比如在发生前捕获传出请求并添加参数

谢谢


Eric

除非您有一个输出传出链接的中心位置,否则您必须手动执行此操作(可能visual studio搜索/替换在这里会有所帮助,但我会小心,因为您可能最终更改了您不想更改的链接)。

除非您有一个输出传出链接的中心位置,您必须手动执行此操作(visual studio搜索/替换可能在这里有所帮助,但我会小心,因为您可能最终更改了您不想更改的链接)。

您只需使用javascript或使用jQuery的javascript即可完成此操作

$("a").click(function(e){
    e.preventDefault();
    window.location = $(this).attr("href") + window.location.search;
});
那应该让你开始

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


您只需使用javascript或使用jQuery的javascript就可以做到这一点

$("a").click(function(e){
    e.preventDefault();
    window.location = $(this).attr("href") + window.location.search;
});
那应该让你开始

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


您可以通过修改发送回客户端的html的httpmodule实现拦截过滤器。有关更多详细信息,请参阅:

还有几个例子:


您可以通过修改发送回客户端的html的httpmodule实现拦截过滤器。有关更多详细信息,请参阅:

还有几个例子:


您可以使用以下命令来使用查询字符串参数 您可以像这样遍历所有查询字符串参数

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]);

  } 
}
int-loop1,loop2;
//加载NameValueCollection对象。
NameValueCollection coll=Request.QueryString;
//将所有键的名称放入字符串数组。字符串[]arr1=coll.allkey;
字符串参数=”;
for(loop1=0;loop1

这只是基本的想法。但是您可以在不知道名称的情况下循环参数。

您可以使用以下命令来使用查询字符串参数 您可以像这样遍历所有查询字符串参数

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]);

  } 
}
int-loop1,loop2;
//加载NameValueCollection对象。
NameValueCollection coll=Request.QueryString;
//将所有键的名称放入字符串数组。字符串[]arr1=coll.allkey;
字符串参数=”;
for(loop1=0;loop1

这只是基本的想法。但是,您可以在不知道名称的情况下循环参数。

您可以修改链接本身的href属性,而不是设置window.location,从而丢失调用
preventDefault
。这有点好,因为设置window.location与单击链接并不完全相同-例如,没有传递引用者标题。我考虑过这样做,但我不确定在操作href之前不会发生非jQuery单击事件。在这种情况下,最好在页面完成加载后添加此href。您可以修改链接本身的href属性,而不是设置window.location,并取消调用
preventDefault
。这有点好,因为设置window.location与单击链接并不完全相同-例如,没有传递引用者标题。我考虑过这样做,但我不确定在操作href之前不会发生非jQuery单击事件。在这种情况下,最好在页面加载完成后添加href。