c# - Umbraco Request.QueryString 如果是第一次加载页面则为 null

标签 c# asp.net query-string umbraco

我有一个令人抓狂的问题(不是全部吗?)。

我支持一个 Umbraco 4.9.0 站点,该站点遇到一个问题,即请求中的 QueryString 属性始终为 null,但仅在第一次加载页面时出现。例如,

www.site.com/download.aspx?id=d99fe4df-28d9-4565-b444-b42499fcefd3

在代码隐藏中,在 Page_Load 方法上,我试图获取 ID:

var id = Request.QueryString["id"];

除第一次加载页面外,此方法有效。比如我第一次打上面的URL,id是null。如果我立即再次点击该 URL,id 将设置为您期望的值。

此外,如果我通过 Visual Studio 停止并重新启动 Web 应用程序,id 变量将继续按预期工作。但是,如果我只是简单地修改代码库(下面的示例),它会再次第一次传递一个未填充的查询字符串,并在任何时候之后工作。

var test = "my modification test";
var id = Request.QueryString["id"];

我还注意到 Request.UrlReferrer 是空的,但是 Request.Url 是 www.site.com/download.aspx。

非常感谢任何帮助!

最佳答案

代替

var id = Request.QueryString["id"];

尝试

var id = Request["id"];

它有什么作用?它会尝试从请求对象中找到这个请求变量,顺序是

  • 查询字符串
  • 表格
  • cookies
  • 客户端证书
  • 服务器变量

您可能从“FORM ”后事件中获取此变量...因此它将在 Request.Form["id"] .... 而不是在查询字符串中。

关于c# - Umbraco Request.QueryString 如果是第一次加载页面则为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196533/

相关文章:

c# - 如何在 Azure 中列出经典虚拟机

c# - 我可以在读取过程中中断数据读取器吗?

c# - ASP.NET 内联脚本

asp.net - 多列表高度

c# - 同时使用 POST 和 GET 的 HttpWebRequest

c# - 如何在 C# 中使一个窗体先于另一个窗体加载?

c# - 不是有效的 Win32 应用程序

Asp.net 图像大小调整质量

java - Android 的奇怪问题,程序可以编译但无法运行

java - 如何从 javax.persistence.Query 获取查询字符串?