传递两个模型来查看

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

您可以创建包含两个模型的特殊视图模型:

 public class CurrencyAndWeatherViewModel { public IEnumerable 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); } 

您必须创建一个新模型,该模型必须包含要将其传递给视图的整个对象。 您应该创建一个inheritance基本模型(类,对象)的模型(类,对象)。

还有其他建议你可以通过View [“model1”]和View [“model2”]发送对象(模型),或者只是一个包含对象的数组来传递它并将它们转换到我不建议的视图中。

听起来您可以使用特定于此视图的模型。

 public class MyViewModel{ public List 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() }); } 

您可以向视图模型添加更多属性,其中包含任何其他模型(天气模型)并适当地设置它们。