2012-09-24 66 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

不確定最後評論的相關性。 –