我在互联网上看到很多对这段代码的引用:
if (Request.AcceptTypes.Contains ...
但是对于我的生活,我找不到此方法所在的名称空间。
我们正在使用 MVC4 WebApi,这是 MVC3 特有的吗?拜托,在我拔掉剩下的头发之前。
编辑:
与@Styxxyless 一起回答,这就是我得到的(没有AcceptTypes)。我知道我遗漏了一些明显的东西,但它是什么?
另外,我在我的项目中引用了 System.Web。
我在互联网上看到很多对这段代码的引用:
if (Request.AcceptTypes.Contains ...
但是对于我的生活,我找不到此方法所在的名称空间。
我们正在使用 MVC4 WebApi,这是 MVC3 特有的吗?拜托,在我拔掉剩下的头发之前。
编辑:
与@Styxxyless 一起回答,这就是我得到的(没有AcceptTypes)。我知道我遗漏了一些明显的东西,但它是什么?
另外,我在我的项目中引用了 System.Web。
System.Web.HttpRequest.AcceptTypes
public string[] AcceptTypes { get; }
获取客户端支持的 MIME 接受类型的字符串数组。
而Contains()
方法只是基本IEnumerable.Contains
方法。
对于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"
它是 ( .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();
}