2012-09-24 43 views
2

Request.AcceptTypes.Contains我看到这段代码多次提到在互联网络:哪里是在MVC4

if (Request.AcceptTypes.Contains ... 

但对我的生命,我找不到在哪里这种方法存在的命名空间。

我们使用MVC4 WebApi,这是MVC3特有的吗?请在我拔出其余的头发之前。

编辑:

与@Styxxyless答案去,这是我所得到的(无AcceptTypes)。我知道我错过了一些明显的东西,但它是什么?

enter image description here

而且,我在我的项目的System.Web参考。

+0

Type在'Request.AcceptTypes',不'System.Web.HttpRequest'。 'System.Web.HttpRequest'是实际的类,而不是实际的Request对象,所以你不会看到它的实例方法/属性。 – Gromer

回答

2

对于MVC,代码如下:

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

对于网页API,该功能是使用以下代码来实现:

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

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

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

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(); 
} 
+0

我的问题更多的是关于'AcceptTypes',而不是'Contains'。 –

+0

Google对'Request.AcceptTypes'的第一个结果是http://msdn.microsoft.com/en-us/library/system.web.httprequest.accepttypes(v = vs.100).aspx .... – Gromer

+0

不确定最后评论的相关性。 –