What HttpContext.Current.Request[“CarName”] != null,它在做什么

本文关键字:null 什么 Request Current HttpContext CarName What | 更新日期: 2023-09-27 18:30:23

我正在修改代码的主题行,但没有收到它。我在想HttpContext.Current.Request是只读的,它返回请求的网址。我们可以像变量或会话变量一样为HttpContext.Current.Request["CarName"]设置值吗?

请指导我这条线在做什么。

编辑:

if (HttpContext.Current.Request["CarName"] != null){
}

What HttpContext.Current.Request[“CarName”] != null,它在做什么

Request对象上的索引器方法在Request的成员中查找KeyValuePair。重要的是要注意,Request是一个完整的对象。不仅仅是一个网址。

ILSpy 将此显示为索引器方法的实现:

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"是否是 Request 对象的上述任何 KeyValuePair 个成员中包含的键。

请参阅 HttpContext.Request.Item (查找x[]语法时,查找x.Item):

QueryStringFormCookieServerVariables 集合中获取指定的对象。

如果从其中一个源中找不到具有给定键的值,则返回null。在这种情况下,"CarName"大概是在有效请求中提供的(例如 ../search?CarName=Rusty ),因此条件可能会检查"无搜索条件"。

这与使用会话不同!会话为"每个会话"的关联数据(但可以通过直接 cookie 支持)提供通用机制。在任何情况下,切勿直接信任从客户端获取的用户数据,因为它可能会被欺骗。