2

我在互联网上看到很多对这段代码的引用:

if (Request.AcceptTypes.Contains ...

但是对于我的生活,我找不到此方法所在的名称空间。

我们正在使用 MVC4 WebApi,这是 MVC3 特有的吗?拜托,在我拔掉剩下的头发之前。

编辑:

与@Styxxyless 一起回答,这就是我得到的(没有AcceptTypes)。我知道我遗漏了一些明显的东西,但它是什么?

在此处输入图像描述

另外,我在我的项目中引用了 System.Web。

4

3 回答 3

2

System.Web.HttpRequest.AcceptTypes

public string[] AcceptTypes { get; }

获取客户端支持的 MIME 接受类型的字符串数组。

Contains()方法只是基本IEnumerable.Contains方法。

于 2012-09-24T21:53:57.347 回答
2

对于MVC,代码如下:

Request.AcceptTypes.Contains([MIME type]);

对于Web API,该功能是使用以下代码实现的:

this.Request.Headers.Accept.Contains(new MediaTypeWithQualityHeaderValue([MIME type]))

或者

this.Request.Headers.GetValues("Accept").Contains([MIME type])

MIME 类型的一个示例是:"image/jpeg"

于 2012-09-25T20:58:45.787 回答
1

它是 ( .Contains) 的一个方法IEnumerable,它Array实现了。

http://msdn.microsoft.com/en-us/library/bb352880(v=vs.100).aspx

编辑:

如果您查看Controller(您的控制器类派生自)的定义,我们有:

//
// Summary:
//     Gets the System.Web.HttpRequestBase object for the current HTTP request.
//
// Returns:
//     The request object.
public HttpRequestBase Request { get; }

这就是为什么您在网上看到的代码使用的是Request.AcceptTypes,而不是System.Web.HttpRequest. 该属性的名称是Request,但它返回一个HttpRequestBase。现在,如果System.Web.HttpRequest该类有一个名为 的静态属性AcceptTypes,您将能够通过 访问它System.Web.HttpRequest.AcceptTypes

对不起所有的混乱!

执行:

public ActionResult Index()
{
    if (Request.AcceptTypes.Contains("image/jpeg"))
    {
        // Do something.
    }

    return View();
}
于 2012-09-24T21:52:58.427 回答