【问题标题】:query string parameter without value, only key查询字符串参数没有值,只有键
【发布时间】:2012-09-07 09:55:35
【问题描述】:

我对 asp.net 中的查询字符串有疑问:

带有查询字符串参数的标准查询字符串是"www.mysity.url?key1=value1&key2=value2",但我只需要检查是否有查询字符串键...是的,正确的决定之一:www.mysite.url?reset=true,但这对我来说是多余的语法。

在标记中我使用"<a href='UrlHelper.GetResetUrl()'>Reset</a>" 之类的东西,此方法返回"www.mysity.url?reset",但在用户端标记中我有“重置”

【问题讨论】:

  • 您知道您可以简单地检查您的网址是否包含“?reset”,仅此而已。

标签: asp.net query-string


【解决方案1】:

如果您不指定参数名称,则将其视为null

它的值是reset

所以你必须检查它如下:

if(Request.QueryString[null]=="reset")
{
    //Take some reset action
}

【讨论】:

  • 这个答案对我很有用,因为值是动态的
【解决方案2】:

一个快速而肮脏的解决方案是:

if(Request.Url.Query.Contains("?reset"))
{
    // ok we have a reset
}

假设您有一个标准的重置调用,询问为:www.mysity.url?reset 并且重置 url 没有其他参数。如果有,您可以简单地检查 reset 关键字。

这段代码HttpContext.Current.Request["reset"] 总是返回空值,所以如果你想让它变得困难,下一个最好的办法是在 url 之后手动分析你的密钥。

【讨论】:

    【解决方案3】:

    所有处理查询字符串参数的代码都应该不区分大小写。浏览器(或互联网基础设施的一部分?)可能会转换大小写。

    一种检查查询字符串中是否存在重置参数的方法:

    bool reset = Request.Url.Query.IndexOf("reset", StringComparison.CurrentCultureIgnoreCase) > -1;
    

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多