2017-07-20 9 views
0

OpenWeatherMapを使用して、MVCビルドされたWebサイトに天気フィードを提供しようとしています。 モデルは次のように:OpenWeatherMapを取得する表示するJSONデータ

{ 
    public class OpenWeatherMap 
    { 
     public List<Data> list; 
    } 

    public class Data 
    { 
     public Main main { get; set; } 
     public List<Weather> weather { get; set; } 
     public Clouds clouds { get; set; } 
     public Wind wind { get; set; } 
     public Rain rain { get; set; } 
     public string dt_txt { get; set; } 
    } 

    public class Main 
    { 
     public double temp { get; set; } 
     public double temp_min { get; set; } 
     public double temp_max { get; set; } 
     public double pressure { get; set; } 
     public double sea_level { get; set; } 
     public double grnd_level { get; set; } 
     public int humidity { get; set; } 
     public double temp_kf { get; set; } 
    } 

    public class Weather 
    { 
     public int id { get; set; } 
     public string main { get; set; } 
     public string description { get; set; } 
     public string icon { get; set; } 
    } 

    public class Clouds 
    { 
     public int all { get; set; } 
    } 

    public class Wind 
    { 
     public double speed { get; set; } 
     public double deg { get; set; } 
    } 
    public class Rain 
    { 
     public double rain { get; set; }     
    } 

    public class Sys 
    { 
     public string pod { get; set; } 

    } 
} 

コントローラーを次のように:

public OpenWeatherMap GetLocalWeather() 
    { 

     string apiUrl = BaseURL + "id=" + CityID + "&appid=" + AppID + "&units=metric"; 

     string result = RequestHandler.Process(apiUrl); 

     OpenWeatherMap lWeather = new JavaScriptSerializer().Deserialize<OpenWeatherMap>(result); 


     return lWeather; 
    } 

    public ActionResult Index() 
    { 
     OpenWeatherMap localWeather = GetLocalWeather(); 

     return View(); 
    } 

は、私は2つの質問があります。

  1. ビューにデータを渡すために進むための最良の方法は何をして持っています今やJSONデータがアイテムを省略することに気づいた降雨データは今日消​​えた。
  2. このようなイベントをカバーする最良の方法は何ですか?
+0

私はビューモデルを作成し、それをビューに渡し、値が設定されていない場合に処理できるモデルで、ケースのビューに表示するものを渡します。 https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-3 –

+0

@DerekHackettご返信ありがとうございます。私は次のようなモデルのデフォルト設定を試しました: - public class Rain { public double rain {get;セット; } public Rain() { this.rain = 0.0; } }返されるjsonデータにはRainへの参照が含まれていないため、「オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。クラスRainをコメントアウトする以外に、他に何かできることがあります。 –

+0

これは私がやることです。これはあなたのために働きますか?パブリッククラスWeather { private double _rain; public double Rain {get { if(_rain!= null) リターン_rain; それ以外の場合は0.0を返します。 } set {_rain = value; }} } –

答えて

0

これで問題が解決します。