2013-11-28 7 views
0

Я работаю над MVC-приложением, и я пытаюсь сделать соединение AJAX с контроллером веб-API, который у меня есть. Единственная ошибка, которую я могу получить, - «Неопознано». Кроме того, в моем диспетчере api delete action я бросаю случайное исключение, поэтому я могу определить, успешно ли я попал в этот метод, но я этого не делаю.Ajax вызов ASP.NET MVC веб-API

UPDATE:

Ok Кажется, я забывал о «removeFile» маршрут на моей URL в вызове Ajax, но вопрос Если я добавляю на «данные» атрибут вызов Ajax пройти в моем сериализованном форма управления перестает работать должным образом.

данных: $ ("# frmManipulate") сериализации()

Ajax вызова:.

$("#frmManipulate").submit(function() { 
     if (confirm("Are you sure you want to delete all selected files?")) { 
      if ($(this).data('clicked').is('[name="delete"]')) { 
       $.ajax({ 
        type: "DELETE", 
        url: "api/file/removeFile", 
        data: $("#frmManipulate").serialize() 
       }).complete(function ($data) { 
        alert("done"); 
       }); 
     } 
     return false; 
    }); 

Web API управления:

[RoutePrefix("api/file")] 
public class ManipulateController : ApiController 
{ 
    // GET api/<controller> 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    // GET api/<controller>/5 
    public string Get(int id) 
    { 
     return "value"; 
    } 

    // POST api/<controller> 
    public void Post([FromBody]string value) 
    { 
    } 

    // PUT api/<controller>/5 
    public void Put(int id, [FromBody]string value) 
    { 
    } 

    [Route("removeFile")] 
    // DELETE api/<controller>/5 
    public void DeleteFile(string[] url) 
    { 
     foreach (var file in url) 
     { 
      throw new MarshalDirectiveException(); 
     } 
    } 
} 

ответ

1

Попробуйте сделать УДАЛИТЬ запрос без тела сообщения ,

+0

Я пробовал, но это не сработало. И в любом случае я хочу передать свои элементы управления формы. – user3006019

+0

попробуйте добавить атрибут [HttpDelete] к методу контроллера, а затем попробуйте выполнить запрос удаления. –

+0

У DELETE не может быть тела сообщения. – Badri