.net Page.Request.QueryString有一个值,但没有传递到该页

.net Page.Request.QueryString有一个值,但没有传递到该页,.net,sharepoint,request.querystring,.net,Sharepoint,Request.querystring,下面的代码返回值“3”,尽管没有值作为查询字符串传递。是否有某种方式使“id”卡在服务器内存中(因为它不是特定于用户的)或者“id”是一个特殊值。有什么想法吗 if (Page.Request.QueryString["id"] != null) { Page.Trace.Write("Query String Key Found"); ListItemID = HttpContext.Current.Request.QueryString["id"]; } 这位于SharePoint 200

下面的代码返回值“3”,尽管没有值作为查询字符串传递。是否有某种方式使“id”卡在服务器内存中(因为它不是特定于用户的)或者“id”是一个特殊值。有什么想法吗

if (Page.Request.QueryString["id"] != null)
{
Page.Trace.Write("Query String Key Found");
ListItemID = HttpContext.Current.Request.QueryString["id"];
}

这位于SharePoint 2007 Web部件中。

如果该Web部件位于通过单击上一页的列表项导航到的页面上;您将看到该列表项的id。

可能有一个带有参数的post(或GET)在某个地方对您隐藏。querystring是过去的GET变量,没有“卡住”或“服务器内存”

使用诸如或之类的工具来分析HTTP流量。这会告诉你谁在提出什么要求。
尽管它可能是您在Sharepoint中单击的控件的ID。

清除浏览器缓存。

通常,在添加Web部件时,它可用于输入的所有参数都会被指定一个默认值,例如,将dataformwebpart添加到一个ampty页面并将其绑定到列表。然后打开页面的源代码。您可以在那里看到一组参数绑定,这些参数又可以绑定到querystring。如果为您的Web部件分配了ListItemId的默认值,您可以吗


或者,您实际上是在调试并单步执行这段代码,而id querystring变量实际上包含3?如果是这样,我同意另一个答案,使用Fiddler检查打开页面时发出的http调用数。

当我清除所有缓存,打开新浏览器并导航到aspx页面时,即使我专门手动输入URL,查询字符串也有一个值。代码驻留在哪里?它在主页上吗?还是在从页面引用的控件中?如果它位于从页面引用的控件中,请在HTML上执行“查看源代码”,并查看组件的URL。该URL中必须有一个“id”参数。浏览器缓存与URL无关HttpRequest@Mircea,我知道。但是一个完整的浏览器缓存可能会导致各种巫毒,尤其是在SharePoint中处理Web部件时。