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