MVC4中的Request.AcceptTypes.Contains在哪里

时间:2012-09-24 21:47:06

标签: asp.net-mvc-4

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

if (Request.AcceptTypes.Contains ...

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

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

编辑:

使用@Styxxyless回答,这是我得到的(没有AcceptTypes)。我知道我错过了一些明显的东西,但它是什么?

enter image description here

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

3 个答案:

答案 0 :(得分:2)

System.Web.HttpRequest.AcceptTypes

public string[] AcceptTypes { get; }
  

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

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

答案 1 :(得分: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"

答案 2 :(得分: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();
}