2015-11-17 4 views
0

У меня есть следующий метод Odata метод asp mvc solution, этот метод на 100% создан мастером только для моего учебного случая.Как правильно использовать Patch reqvest с odata

[AcceptVerbs("PATCH", "MERGE")] 
     public async Task<IHttpActionResult> Patch([FromODataUri] long key, Delta<SchoolChildrens> patch) 
     { 
      Validate(patch.GetEntity()); 

      if (!ModelState.IsValid) 
      { 
       return BadRequest(ModelState); 
      } 

      SchoolChildrens schoolChildrens = await db.SchoolChildrensSet.FindAsync(key); 
      if (schoolChildrens == null) 
      { 
       return NotFound(); 
      } 

      patch.Patch(schoolChildrens); 

      try 
      { 
       await db.SaveChangesAsync(); 
      } 
      catch (DbUpdateConcurrencyException) 
      { 
       if (!SchoolChildrensExists(key)) 
       { 
        return NotFound(); 
       } 
       else 
       { 
        throw; 
       } 
      } 

      return Updated(schoolChildrens); 
     } 

У меня есть следующий код Javascript для вызова этого метода:

self.updateItem = function (data) { 
    var student = ko.toJS(data); 

    $.ajax({ 
     url: '/odata/SchoolChildrens(' + student.Id + ')', 
     data: JSON.stringify(student), 
     type: 'PATCH', 
     success: function() { 

     }, 
     error: function() { 

     }, 
     xhr: function() { 
      return window.XMLHttpRequest == null || new window.XMLHttpRequest().addEventListener == null ? new window.ActiveXObject("Microsoft.XMLHTTP") : $.ajaxSettings.xhr(); 
     } 
    }); 
}; 

Мой рекорд никогда не обновляется с помощью этого метода. как использовать его правильно? Как я должен отправить Delta?

ответ

1

ли работа, чтобы добавить:

$.ajax({ 
... 
contentType: 'application/json; charset=utf-8', 
datatype: 'json', 
... 
}; 
Смежные вопросы