2016-03-31 4 views
0

Я хочу использовать запрос на отправку ajax, но мой запрос работает только при использовании запроса Get.Ajax request Post Params

Когда я использую запрос на получение, моя модель заполняется правильно. С запросом на отправку моя моя модель имеет значение null.

Так это работает:

self.ClearRegimeFromUntil = function() { 
    var model = { clearFrom: kendo.format("{0:dd/MM/yyyy hh:mm:ss tt}", self.clearFrom()), clearUntil: kendo.format("{0:dd/MM/yyyy hh:mm:ss tt}", self.clearUntil()), userId: self.UserID() }; 
    console.log(model); 
    $.ajax({ 
     type: "GET", 
     url: rootUrl + "api/CalendarDays/ClearRegimeFromUntil", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: model, 
     success: function (response) { 
      console.log(response); 

     } 
    }); 
}; 

с на стороне контроллера:

[System.Web.Http.HttpGet] 
    [System.Web.Http.Route(@"api/CalendarDays/ClearRegimeFromUntil")] 
    public async Task<IHttpActionResult> ClearRegimeFromUntil([FromUri] DeleteFromModel model) 
    { 

     //await _userCalendarDayRepository.DeleteFutureUserCalendarDays(model.UserId,DateTime.Parse(model.ClearFrom)); 
     return Ok(true); 
    } 

Но это не работает:

self.ClearRegimeFromUntil = function() { 
    var model = { clearFrom: kendo.format("{0:dd/MM/yyyy hh:mm:ss tt}", self.clearFrom()), clearUntil: kendo.format("{0:dd/MM/yyyy hh:mm:ss tt}", self.clearUntil()), userId: self.UserID() }; 
    console.log(model); 
    $.ajax({ 
     type: "POST", 
     url: rootUrl + "api/CalendarDays/ClearRegimeFromUntil", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: model, 
     success: function (response) { 
      console.log(response); 

     } 
    }); 
}; 

с на стороне контроллера:

[System.Web.Http.HttpPost] 
    [System.Web.Http.Route(@"api/CalendarDays/ClearRegimeFromUntil")] 
    public async Task<IHttpActionResult> ClearRegimeFromUntil([FromUri] DeleteFromModel model) 
    { 

     //await _userCalendarDayRepository.DeleteFutureUserCalendarDays(model.UserId,DateTime.Parse(model.ClearFrom)); 
     return Ok(true); 
    } 

Моя модель:

public class DeleteFromModel 
{ 
    public string UserId { get; set; } 
    public string ClearFrom { get; set; } 
    public string ClearUntil { get; set; } 

} 

заголовкам и ответ (не знаю, как показать их лучше): http://pastebin.com/AM6ScEsz

+0

Вы не отправляете Json на сервер. Попробуйте 'data: JSON.stringify (model)'. Поместите контрольную точку в свой метод контроллера, чтобы узнать, достигает ли запрос. – Dandy

+0

Это ничего не меняет, запрос и модель отправляются просто неправильно. Спасибо, в любом случае. – Timvr01

ответ

1

Снятие [FromUri] решит проблему.

[System.Web.Http.HttpPost] 
[System.Web.Http.Route(@"api/CalendarDays/ClearRegimeFromUntil")] 
public async Task<IHttpActionResult> ClearRegimeFromUntil(DeleteFromModel model) 
{ 

    //await _userCalendarDayRepository.DeleteFutureUserCalendarDays(model.UserId,DateTime.Parse(model.ClearFrom)); 
    return Ok(true); 
} 
0

Проверьте Ваш HTML форма в POST

<form method="post"> 
... 
</form> 

Не могли бы вы отправить нам ваши сетевые заголовки и ответ на запрос ajax?

+0

Я не работаю с формой, я добавил заголовки и ответ – Timvr01