我正在修改代码的主题行,但没有得到它。我在想HttpContext.Current.Request
是只读的,它返回请求的 url。我们可以HttpContext.Current.Request["CarName"]
像变量或会话变量一样设置值吗?
请指导我这条线在做什么。
编辑:
if (HttpContext.Current.Request["CarName"] != null){
}
对象上的索引器方法Request
查找KeyValuePair
' 内Request
的 ' 成员。重要的是要注意它Request
是一个完整的对象......不仅仅是一个 URL。
ILSpy 将其显示为 indexer 方法的实现:
public string this[string key]
{
get
{
string text = this.QueryString[key];
if (text != null)
{
return text;
}
text = this.Form[key];
if (text != null)
{
return text;
}
HttpCookie httpCookie = this.Cookies[key];
if (httpCookie != null)
{
return httpCookie.Value;
}
text = this.ServerVariables[key];
if (text != null)
{
return text;
}
return null;
}
}
因此,您的代码行正在检查“CarName”是否是包含在任何上述对象KeyValuePair
成员中的键Request
。
请参阅HttpContext.Request.Item(查找x[]
语法时,查找x.Item
):
从QueryString、Form、Cookies或ServerVariables集合中获取指定的对象。
如果从其中一个源中找不到具有给定键的值,null
则返回。在这种情况下,可能会在有效请求中提供“CarName”(例如../search?CarName=Rusty
),因此条件可能会检查“无搜索条件”。
这与使用会话不同!会话为“每个会话”的关联数据(但可以由直接 cookie 支持)提供通用机制。在任何情况下,永远不要直接信任从客户端获得的用户数据,因为它可能会被欺骗。