Как передать значения из сервиса в ViewModel? - PullRequest
0 голосов
/ 15 мая 2019

Я создал сервис для получения данных из файла JSON, и теперь я пытаюсь показать их на странице.

В сервисе переменная model получает правильные значения, но в ViewModel varibales as StationId, StationName,Сообщение, DateText и т. Д. Являются нулевыми, поэтому на странице ничего не видно.(В настоящее время я установил некоторые жестко закодированные значения для целей тестирования)

Модель

public class IrrigNetModel
    {
        public IrrigNetModelItem[] items { get; set; }
    }

    public class IrrigNetModelItem
    {
        public int ID { get; set; }
        public string Message { get; set; }
        public DateTime Date { get; set; }
        public string DateText { get; set; }
        public int StationId { get; set; }
        public string StationName { get; set; }
        public float StationLongitude { get; set; }
        public float StationLatitude { get; set; }
        public int ServiceId { get; set; }
        public string ServiceName { get; set; }
    }

Сервис

class IrrigNetService
    {

        public static async Task<IrrigNetModel> GetServices(string token, string lngCode)
        {
            IrrigNetModel model = new IrrigNetModel();
            try
            {
                string URL = DataURL.BASE_URL + "agronetmobile/getlistnotifications?lngCode=" + lngCode;
                string content = Newtonsoft.Json.JsonConvert.SerializeObject(model);

                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
                    client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token);
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                    //client.DefaultRequestHeaders.TryAddWithoutValidation("Culture", LocalData.Lang);

                    HttpResponseMessage result = await client.PostAsync(URL, new StringContent(content, Encoding.UTF8, "application/json"));                    
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {

                        string resultContent = await result.Content.ReadAsStringAsync();
                        model = (IrrigNetModel)Newtonsoft.Json.JsonConvert.DeserializeObject(resultContent, typeof(IrrigNetModel));

                    }
                    else if (result.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                    {
                        //
                    }
                }
            }
            catch (Exception ex)
            {
                model = null;
            }
            return model;
        }
    }

ViewModel:

public ObservableCollection<IrrigNetModelItem> IrrigNetCollection { get; set; } = new ObservableCollection<IrrigNetModelItem>
       {
           new IrrigNetModelItem
           {
               StationId = 1,
               StationName = "Krakatosia",
               Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur scelerisque a lorem sit amet mattis.",
               DateText = "21.07.2012."
           }
       };

       public IrrigNetViewModel()
       {
           var token = LocalData.Token;
           IrrigNetService.GetServices(token,"sr");

           TabTappedCommand = new Command((tabName) => OnTapClicked(tabName.ToString()));
           HideListOnTapCommand = new Command(HideListOnTap);
           IrrigNetModelItem model = new IrrigNetModelItem();
           var irrigNetModel = new IrrigNetModelItem
           {
               StationId = model.StationId,
               StationName = model.StationName,
               Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur scelerisque a lorem sit amet mattis.",
               DateText = model.DateText
           };
           IrrigNetCollection.Add(irrigNetModel);
       }

1 Ответ

0 голосов
/ 15 мая 2019

вы звоните в сервис, но не сохраняете результат

IrrigNetService.GetServices(token,"sr");

вместо этого попробуйте это

var data = await IrrigNetService.GetServices(token,"sr");

foreach (var d in data.items) {
  IrrigNetCollection.Add(d);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...