2013-06-10 6 views
10

Я новичок в 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); 
    } 
+0

Просто создайте класс совокупной модели с двумя моделями, которые необходимо передать в качестве свойств. –

+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, чтобы получить свойства от валют и модели. CurrentWeather go получить свойства от 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

В классе контроллера '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

Смежные вопросы