2017-02-06 3 views
0

Угловой 2 Код URL запроса: http://loacalhost:8800/MyController/SaveBookingsAngular2 Сообщение запроса параметров обработки в C#

let data = { 
    occupationListStr: occupations, 
    rOccupationListStr: roccsStr, 
}; 
let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 
this.http.post('MyController/SaveBookings', JSON.stringify(data),options) 
    .then(res => { 
     return res.json() 
    }) 
    .catch(this.handleError); 

C# код

Контроллер

Выпуск: Request.QueryString значения occupationListStr и rOccupationListStr: null

public ActionResult SaveBookings() 
{ 
    dynamic occupationListStr = Request.QueryString["occupationListStr"]; 
    dynamic rOccupationListStr = Request.QueryString["rOccupationListStr"]; 

    <....Do something.....> 

    return <return something>; 
} 
+2

Вы не посылая те значения в качестве параметров запроса, вы фактически разбираете их в строке и отправляете ее в тело запроса. –

+0

Посмотрите на это http://stackoverflow.com/a/41533506/1876572 – Eldho

+0

Если вы сходите по маршруту строк запроса, как только вы изменили Угловой код, я бы предложил изменить подпись метода на 'public ActionResult SaveBookingsPost ([FromQuery] string OccupListStr, [FromQuery] string rOccupationListStr) ' – peval27

ответ

1

В своем вопросе вы отправляете данные как Json (с использованием JSON.stringify(data)) в теле запроса, но в своем действии вы ожидаете данные из строки запроса.

Вы должны либо разобрать Json в своем действие на некоторую модель:

// you can use your own model (some class to parse Json to) instead of "dynamic" 
[HttpPost] 
public ActionResult SaveBookings([FromBody]dynamic data) 
{ 
    var occupationListStr = data.occupationListStr; 
    var rOccupationListStr = data.rOccupationListStr; 

    <....Do something.....> 

    return <return something>; 
} 

ИЛИ

вы должны изменить ваш запрос в угловых 2:

this.http.post('MyController/SaveBookings?occupationListStr=' + occupations + '&rOccupationListStr=' + roccsStr, null, options) 
    .then(res => { 
     return res.json() 
    }) 
    .catch(this.handleError); 
+0

Спасибо за ваше предложение –

+0

@PrakashGupta, Добро пожаловать –

1
  1. Вам не нужно stringify
  2. Создать класс в интерфейсе (скажем Occupation) с occupationListStr, rOccupationListStr свойства
  3. Из класса можно автоматически создать контроллер с подмостей. Если вы не хотите

[httpPost] public IHttpActionResult Post([FromBody]Occupation objOccupation) { }