16

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

3 回答 3

43

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

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);
}
于 2013-06-10T18:30:56.567 回答
6

您必须创建一个新模型,该模型必须包含您想要将其传递给查看的整个对象。您应该创建一个继承基础模型(类、对象)的模型(类、对象)。

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

于 2013-06-10T18:34:01.087 回答
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() });
    }

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

于 2013-06-10T18:30:47.707 回答