2011-10-03 39 views
0

我有以下自定義的ActionResult空字符串。它正常工作,如果我 「強制」 的ContentType,但是默認的行爲似乎是檢索一個空字符串作爲將contentType自定義的ActionResult始終返回「的ContentType」

C#版本

public ActionResult Restful(Web.Mvc.Controller controller) 
{ 
    // Test code 
    var contentType = controller.Request.ContentType; 
    // Above always returns "" 

    switch (ResultType(controller)) { 
     case RestfulResultType.Html: 
      ViewResult result = new ViewResult(); 
      return result; 
     case RestfulResultType.Json: 
      JsonResult result = new JsonResult(); 
      return result; 
     case RestfulResultType.JsonP: 
      JsonPResult result = new JsonPResult(); 
      return result; 
     case RestfulResultType.Xml: 
      return new XmlResult(null); 
     default: 
      ViewResult result = new ViewResult(); 
      return result; 
    } 

} 

VB.NET版本

<Extension()> 
    Public Function Restful(controller As Web.Mvc.Controller) As ActionResult 

    ''# Test code 
    Dim contentType = controller.Request.ContentType 
    ''# Above always returns "" 

     Select Case ResultType(controller) 
      Case RestfulResultType.Html 
       Dim result As New ViewResult() 
       Return result 
      Case RestfulResultType.Json 
       Dim result As New JsonResult() 
       Return result 
      Case RestfulResultType.JsonP 
       Dim result As New JsonPResult() 
       Return result 
      Case RestfulResultType.Xml 
       Return New XmlResult(Nothing) 
      Case Else 
       Dim result As New ViewResult() 
       Return result 
     End Select 

    End Function 

爲什麼不我越來越從這個適當的contentType?

PS:如果你關心什麼ResultType呢,在這兒呢。

Private Function ResultType(controller As Web.Mvc.Controller) As RestfulResultType 

     Select Case LCase(controller.HttpContext.Request.ContentType) 
      Case "text/html" : Return RestfulResultType.Html 
      Case "application/json" : Return RestfulResultType.Json 
      Case "text/javascript" : Return RestfulResultType.JsonP 
      Case "application/javascript" : Return RestfulResultType.JsonP 
      Case "application/x-javascript" : Return RestfulResultType.JsonP 
      Case "text/xml" : Return RestfulResultType.Xml 
      Case "application/xml" : Return RestfulResultType.Xml 
      Case Else : Return RestfulResultType.Html 
     End Select 
    End Function 

回答

0

Request.ContentType是

的mime類型的請求的主體中的(用於POST 和PUT請求

您應檢查HttpRequest.Accept頭值

的內容類型是可接受