【发布时间】:2013-01-31 20:41:49
【问题描述】:
在 ASP.NET 页面的上下文中,我可以使用 Request.QueryString 获取 URI 的查询字符串部分中的键/值对的集合。
例如,如果我使用http://local/Default.aspx?test=value 加载我的页面,那么我可以调用以下代码:
//http://local/Default.aspx?test=value
protected void Page_Load(object sender, EventArgs e)
{
string value = Request.QueryString["test"]; // == "value"
}
理想情况下,我想做的是检查 test 是否存在,所以我可以使用 http://local/Default.aspx?test 调用该页面并获得一个布尔值,告诉我是否test 存在于查询字符串中。像这样的:
//http://local/Default.aspx?test
protected void Page_Load(object sender, EventArgs e)
{
bool testExists = Request.QueryString.HasKey("test"); // == True
}
理想情况下,我想要的是一个布尔值,它告诉我测试变量是否存在于字符串中。
我想我可以只使用正则表达式来检查字符串,但我很好奇是否有人有更优雅的解决方案。
我尝试了以下方法:
//http://local/Default.aspx?test
Request.QueryString.AllKeys.Contains("test"); // == False (Should be true)
Request.QueryString.Keys[0]; // == null (Should be "test")
Request.QueryString.GetKey(0); // == null (Should be "test")
这种行为与 PHP 不同,例如,我可以在哪里使用
$testExists = isset($_REQUEST['test']); // == True
【问题讨论】:
-
你为什么不能只检查
null?If(Request.QueryString["test"] != null) -
@JonH:因为
Request.QueryString["test"]返回null,无论查询字符串中是否存在测试。 -
嗯?我不确定你的意思,如果它在查询字符串中没有看到 test ,它只会返回 == null ,否则它会返回 != null ,如果是这样,你可以获取 test 的值。我没有看到问题。
-
@JonH:我不想检查 test 的值,只是想看看它是否存在。例如,我希望
?test和test=anyvalue都返回true,但任何其他 (?differentkey=anyvalue) 都返回false。