2013-08-29 3 views
0

Я пытаюсь использовать AJAX для PUT этот объект в/API/компании/# /:WebAPI PUT и POST перейти к 404

{"CompanyID":2,"Name":"Test Company","Address1":"","Address2":"","City":"","State":"","Zip":"","ContactName":"","ContactPhone":"","ContactEmail":"","EmployeeCount":"","TypeOfIndustry":"","CompanyRevenue":""} 

Мой метод PUT:

public void Put (CompanyOverviewView company) 
    { 
    } 

CompanyOverviewView :

public class CompanyOverviewView { 
    public int CompanyID { get; set; } 
    public string Name { get; set; } 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Zip { get; set; } 
    public string ContactName { get; set; } 
    public string ContactPhone { get; set; } 
    public string ContactEmail { get; set; } 
    public string CompanyType { get; set; } 
    public Nullable<int> EmployeeCount { get; set; } 
    public string TypeOfIndustry { get; set; } 
    public Nullable<decimal> CompanyRevenue { get; set; } 

AJAX Свойства:

var ajaxProperties = { 
     type: "PUT", 
    url: "/api/company/5/", 
    dataType: "json", 
    data: JSON.stringify(postdata) 
    } 

Я получаю ошибку 404, хотя с использованием маршрутизации по умолчанию WebAPI. Почему это не связано? Я что-то упускаю?

+0

Возможно, вы захотите опубликовать свои маршруты, чтобы быть четкими. Контроллер называется 'CompanyController' и наследует ли он от' ApiController'? Выполняют ли другие действия? –

+0

Я настоятельно рекомендую вам попробовать RouteDebugger. Так freakin полезно. http://haacked.com/archive/2011/04/12/routedebugger-2.aspx – Terrance

+0

Вы проверили запрос, чтобы убедиться, что на самом деле происходит запрос PUT/POST? –

ответ

0

Попробуйте добавить processData: false и contentType: 'application/json; charset=utf-8' к вашему ajaxProperties. Это сообщит ajax, чтобы отправить запрос как тело JSON вместо параметров URL.

+0

Каким образом неправильное форматирование тела запроса приведет к 404 (если явно не возвращено)? –

0

Возможно, вы добавляете идентификатор в URL-адрес, когда вам это не нужно. Попробуйте отправить/положить в just/api/company в ajax. Или, альтернативно, просто попробуйте «string id» в качестве другого параметра в методе Put и посмотрите, помогает ли это.

Вам также может потребоваться установить атрибуты FromBody или FromUri для каждого из аргументов в этом случае.

Смежные вопросы