Пройти две модели для просмотра

Я новичок в mvc и стараюсь изучить его, выполнив с ним небольшой проект. У меня есть страница, которая должна отображать определенные валюты даты и погоды. поэтому я должен пройти модель валют и модель погоды. Я сделал, чтобы пройти модель валют и отлично работает, но я не знаю, как пройти вторую модель. И большинство учебных пособий на шоу, как передать только одну модель.

Можете ли вы, ребята, дать представление, как это сделать.

это мое текущее действие контроллера, которое отправляет модель валюты

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

Ответ 1

Вы можете создать специальную модель просмотра, содержащую обе модели:

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

Ответ 2

Вам нужно создать новую модель, которая должна содержать все объекты, которые вы хотите передать для просмотра. Вы должны создать модель (класс, объект), которая наследует базовую модель (класс, объект).

И другое предложение, которое вы можете отправлять объектам (моделям) через View [ "model1" ] и View [ "model2" ] или просто массив, содержащий объекты для его передачи и отбрасывать их внутри представления, которое я не советую.

Ответ 3

Похоже, вы можете использовать модель, специфичную для этого вида.

public class MyViewModel{

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

}

а затем с вашего контроллера вы можете передать эту новую модель View в представление вместо этого:

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

Вы можете просто добавить дополнительные свойства в свою модель просмотра, которые содержат любые другие модели (Weather model), и установить их соответствующим образом.