我在这个方法上遇到这个错误:
[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
方法中有什么问题...谢谢
答案 0 :(得分:18)
我感觉你继承了错误的基本控制器类型。如果您使用的是WebAPI,则应该继承ApiController
,而不是Controller
。
在ApiController
中,Request
为System.Net.Http.HttpRequestMessage
。在Controller
中,Request
为System.Web.HttpRequestBase
。所以扩展方法很接近,但是不正确的类型会给你签名方法不匹配。