88 messaggi dal 18 aprile 2018
Salve,
sto cercando di inviare da un applicazione MVC due oggetti a un API CORE tramite post, per farlo ho scritto questo nell'MVC

Settings setting = new Settings();

 setting.lang = "ITA";

            var requestor = new CustomerSettiengsViewModel();
            requestor.CustomerData = CustomerData;
            requestor.setting = setting;

            JsonSerializerSettings settings = new JsonSerializerSettings();
            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            var myJson = JsonConvert.SerializeObject(requestor, settings);

          

            var httpContent = new StringContent(myJson, Encoding.UTF8, "application/json");

            using (var httpClient = new HttpClient())
            {

                // Do the actual request and await the response
                var httpResponse = await httpClient.PostAsync("https://localhost/api/Homes/", httpContent);



e ricevo nell'API così:


 
        [HttpPost]
        public async Task<ActionResult<CustomerData>> CustomerWeb( CustomerSettiengsViewModel container)
        {


purtroppo ho dati solo in container.CustomerData, in container.settings ho null.

come potrei risolvere?

Grazie in anticipo
Modificato da Mirko2018 il 14 gennaio 2019 18.09 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Mirko,

in container.settings ho null.


Vedo che qui stai valorizzando una proprietà chiamata "setting" e non "settings". E' un errore di battitura? Può dipendere da questo?
requestor.setting = setting;


Inoltre verifica che la proprietà Settings del CustomerSettiengsViewModel abbia un setter pubblico, in modo che possa essere valorizzata durante la deserializzazione del json.
Poi, per una stilistica, usa il PascalCase per i nomi delle proprietà pubbliche delle classi C#. Cioè "Settings" e non "settings".

ciao,
Moreno

Enjoy learning and just keep making
88 messaggi dal 18 aprile 2018
Ho corretto il codice con PascalCase, in realtà credo però che il problema sia in ricezione in quanto se in dubug controllo il MyJson dentro trovo sia CustomerData che Setting.
Ho provato anche così'

             Set.Lang ="ITA";

            var requestor = new CustomerSettingsViewModel();
          //  requestor.CustomerData = CustomerData;
            requestor.Setting = Set;

commentando CustomerData, in questo caso non arriva niente
88 messaggi dal 18 aprile 2018
ok il problema era nel CustomerSettingsViewModel.cs del CORE avevo dichiarato così:

public Settings Settings { get; set; }


invece di

public Settings Setting { get; set; }


Sorry
11.886 messaggi dal 09 febbraio 2002
Contributi
Installa Swagger e avrai a disposizione una documentazione automatica che ti permette anche di capire come va invocata esattamente la tua API.
http://www.aspitalia.com/script/1301/Documentare-Web-API-Swagger-ASP.NET-Core-2.1.aspx

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.