2013-06-10 17 views
10

私はmvcを初めて使用しており、小さなプロジェクトを行うことでそれを学びます。私はその特定の日付の通貨と天気を表示するはずのページを持っています。私は通貨モデルと天気モデルを渡す必要があります。私は通貨のモデルを渡してうまくいきましたが、2番目のモデルをどのように通すべきかはわかりません。また、チュートリアルのほとんどは、1つのモデルだけを渡す方法を示しています。は2つのモデルを表示して表示します

あなたはそれをどうやって行うのか考えてもらえますか?

これは、あなたがこのビューに固有のモデルを使用することができますようにそれが聞こえる通貨モデル

public ActionResult Index(int year,int month,int day) 
    { 
     var model = from r in _db.Currencies 
        where r.date == new DateTime(year,month,day) 
        select r; 

     return View(model); 
    } 
+0

プロパティとして渡す必要がある2つのモデルを持つ集約モデルクラスを作成するだけです。 –

+0

私は理解していません –

答えて

31

あなたは両方のモデルが含まれている特別のviewmodel作成することができます。

public class CurrencyAndWeatherViewModel 
{ 
    public IEnumerable<Currency> Currencies{get;set;} 
    public Weather CurrentWeather {get;set;} 
} 

をして表示するためにそれを渡します。

public ActionResult Index(int year,int month,int day) 
{ 
    var currencies = from r in _db.Currencies 
       where r.date == new DateTime(year,month,day) 
       select r; 
    var weather = ... 

    var model = new CurrencyAndWeatherViewModel {Currencies = currencies.ToArray(), CurrentWeather = weather}; 

    return View(model); 
} 
+0

正常に渡した後、ビューからさまざまなモデルにアクセスするにはどうすればよいですか? – Mwas

+1

model.CurrenciesからCurrencyとmodel.CurrentWeatherのプロパティを取得するには、CurrentWeatherからプロパティを取得します –

3

を送る私の現在のコントローラのアクションです。

public class MyViewModel{ 

    public List<Currencies> CurrencyList {get;set;} 

} 

してから、コントローラからあなたの代わりにビューには、この新しいビューモデルを渡すことができます。

public ActionResult Index(int year,int month,int day) 
    { 
     var model = from r in _db.Currencies 
        where r.date == new DateTime(year,month,day) 
        select r; 

     return View(new MyViewModel { CurrencyList = model.ToList() }); 
    } 

は、あなただけの任意の他のモデルが含まれているあなたのビューモデルに複数のプロパティを追加することができますよりも、(気象モデル)適切に設定してください。

+0

ViewBagまたはTempdataを使用できます。 – caras

5

新しいモデルを作成する必要があります。このモデルには、渡すオブジェクト全体が含まれている必要があります。基本モデル(クラス、オブジェクト)を継承するモデル(クラス、オブジェクト)を作成する必要があります。

また、View ["model1"]とView ["model2"]を介してオブジェクト(モデル)を送信したり、オブジェクトを含む配列だけを渡して、私が助言しないビュー。

+0

Viewでそれらを送信するにはどうすればよいですか?どのようにコントローラからビューに渡すのですか –

+0

Controllerクラスの 'ViewData [" CurrentTime "] = DateTime.Now.ToString();と詳細ページのビューページ'

<%: ViewData["CurrentTime"] %>
'では、このリンクが役立ちます[http] //www.dotnetfunda.com/articles/article1310-how-to-pass-data-from-controllers-to-views-in-aspnet-mvc-tutorial-no-2.aspx) – nesimtunc

関連する問題