Angular httpclient.post отправляет объект JSON Obj в ASP.Net Core Action, на внутреннем уровне полученные данные равны - PullRequest
0 голосов
/ 15 октября 2019

У меня есть проект ASP.Net Core и Angular. Я пытаюсь выполнить очень простую операцию: от публикации Angular формата данных JSON до внутреннего ASP.Net Core. Кажется, что поток работает, он вызывает правильное действие на бэкэнде, однако передача данных равна нулю. Ценю любую помощь, которую я могу получить. Спасибо

Во Front-End у меня есть простой Object, который содержит данные, а в конструкторе я преобразовал его в JSON. Я проверил, что при вызове http.post часть данных содержит информацию JSON. Таким образом, при вызове ниже jsonMessageFormat имеет правильную информацию.

   this._http.post(this._baseUrl + 'fabAutomation/PostTest', 
    this.jsonMessageFormat, this.config).subscribe(result => {
    this._returnedResult = result;
     }, error => console.error(error));

В серверной части я попытался настроить действие PostTest для принятия обоих: 1. строка 2. Формат [FromBody] для преобразования из JSON вМодель

Ни одна, опция не сработала. А на Back-End Action полученные данные равны нулю.

На внешнем интерфейсе:

   fabAutomationJsonMessage: any = [{ "maskID": "AAAA", "recipeName": 
   "XXXX", "JobTypeCduOrReg": "reg", "cduRevNumber": "0", "regRevNumber": 
  "0", "recipeState": null, "reticleAvailability": "eee", "dateTime": 
  "ddd" }];

   jsonMessageFormat: JSON;


 config: any = new HttpHeaders().set('Content-Type', 'application/json')
.set('Accept', 'application/json')




     constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string)
        {
       this.jsonMessageFormat = <JSON>this.fabAutomationJsonMessage;
        this._http = http;
       this._baseUrl = baseUrl;
        }


forSubmitOnClick() {

this._http.post(this._baseUrl + 'fabAutomation/PostTest', 
this.jsonMessageFormat, this.config).subscribe(result => {
  this._returnedResult = result;
}, error => console.error(error));

// На BackEnd:

// На контроллере определите следующее действие, fabAutomationMessageVMOBJ всегда равно нулю

        [HttpPost("[action]")]
        public IActionResult PostTest([FromBody] fabAutomationMessageVM 
        fabAutomationJsonMessageVMOBJ)
          {


        //removed implementation for simplicity


            //for response simply return the same information
            return Json(fabAutomationJsonMessageVMOBJ);


          }

Поскольку весь поток работает, а http.post содержит данные в формате JSON (не ноль), я ожидаю, что эти данные будут передаваться на сервер как нуль-ноль.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Во-первых, я хочу поблагодарить вас всех за помощь, особенно Син Син, который остался со мной. Я обнаружил, что проблема была с viewModel. Несмотря на то, что я объявил класс публичным, я обнаружил, что должен объявить каждого из участников публичным.

0 голосов
/ 15 октября 2019

Ваш основной веб-интерфейс asp.net получает объект модели fabAutomationMessageVM

public IActionResult PostTest([FromBody] fabAutomationMessageVM fabAutomationJsonMessageVMOBJ)

, но вы публикуете массив для вашего fabAutomationJsonMessage в угловом формате, и при тестировании будет ошибка 400что, попробуйте удалить []

fabAutomationJsonMessage: any = { 
       "maskID": "AAAA", 
       "recipeName": 
       "XXXX", "JobTypeCduOrReg": "reg", 
       "cduRevNumber": "0", 
       "regRevNumber": "0", 
       "recipeState": null, 
       "reticleAvailability": "eee", 
       "dateTime": "ddd" 
 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...