web-dev-qa-db-ja.com

表示する2つのモデルを渡す

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

方法を教えてくれますか。

これは通貨モデルを送信する現在のコントローラーアクションです

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);
    }
14
Arif YILMAZ

両方のモデルを含む特別なビューモデルを作成できます:

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);
}
37

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

また、View ["model1"]およびView ["model2"]を介してオブジェクト(モデル)を送信するか、それを渡すオブジェクトを含む配列のみを送信して、ビュー内にキャストすることをお勧めします。

6
nesimtunc

このビューに固有のモデルを使用できるようです。

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() });
    }

他のモデル(天気モデル)を含むビューモデルにプロパティを追加するだけでなく、それらを適切に設定できます。

3
Justin Bicknell