#asp.net-mvc-3 #content-type
#asp.net-mvc-3 #content-type
Вопрос:
У меня есть следующий пользовательский ActionResult. Он работает правильно, если я «принудительно» задаю ContentType, но поведение по умолчанию, по-видимому, заключается в получении пустой строки в качестве 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 resu<
case RestfulResultType.Json:
JsonResult result = new JsonResult();
return resu<
case RestfulResultType.JsonP:
JsonPResult result = new JsonPResult();
return resu<
case RestfulResultType.Xml:
return new XmlResult(null);
default:
ViewResult result = new ViewResult();
return resu<
}
}
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
Ответ №1:
Запрос.ContentType — это
Mime-тип тела запроса (используется с запросами POST и PUT)
Вы должны проверить HttpRequest .Принять значение заголовка
Допустимые типы содержимого