System.Web.HttpRequestBase不包含'CreateResponse'的定义

时间:2014-06-18 14:37:25

标签: asp.net-mvc http

我在这个方法上遇到这个错误:

        [HttpGet]            
        public HttpResponseMessage Search([ModelBinder(typeof(ApiDataTablesModelBinder))] IDataTablesRequest requestModel)
        {
            var sortedColumn = requestModel.Columns.GetSortedColumns().SingleOrDefault();

            bool isDesc = false;
            string sortField = "ID";

            // get all projects and order them
            var projects = lkp_surveyRepo.GetAll();//.OrderBy(sortField, isDesc).ToList();

            // filtered projects
            var filteredResults = projects;

            filteredResults = projects.Where(x => x.code == selectedDistrictID);

            var pagedResults = filteredResults.Skip(requestModel.Start).Take(requestModel.Length);
            var result = Request.CreateResponse(HttpStatusCode.OK, new DataTablesResponse(requestModel.Draw, pagedResults, filteredResults.Count(), projects.Count()));

            return result;
        }

我的控制器正在实施Controller:

public class HomeController : Controller
    {

我发现了这个问题,但答案对我没有帮助:

CreateResponse method in asp.net Web API

完整错误是:

  

错误13'System.Web.HttpRequestBase'不包含定义   对于'CreateResponse'和最佳扩展方法重载   “System.Net.Http.HttpRequestMessageExtensions.CreateResponse(System.Net.Http.HttpRequestMessage,   System.Net.HttpStatusCode,T)'有一些无效的参数

你知道我做错了吗?也许在CreateResponse方法中有什么问题...谢谢

1 个答案:

答案 0 :(得分:18)

我感觉你继承了错误的基本控制器类型。如果您使用的是WebAPI,则应该继承ApiController,而不是Controller

ApiController中,RequestSystem.Net.Http.HttpRequestMessage。在Controller中,RequestSystem.Web.HttpRequestBase。所以扩展方法很接近,但是不正确的类型会给你签名方法不匹配。