2013-06-10 25 views
10

Tôi mới dùng mvc và cố gắng tìm hiểu nó bằng cách thực hiện một dự án nhỏ với nó. Tôi có một trang được cho là để hiển thị ngày và thời tiết cụ thể của ngày đó. vì vậy tôi nên vượt qua mô hình tiền tệ và mô hình thời tiết. Tôi đã làm để vượt qua mô hình tiền tệ và hoạt động tốt nhưng tôi không biết làm thế nào để vượt qua mô hình thứ hai. Và hầu hết các hướng dẫn trên cho thấy làm thế nào để vượt qua chỉ có một mô hình.chuyển hai mô hình để xem

các bạn có thể đưa ra ý tưởng về cách thực hiện không.

đây là hành động điều khiển hiện tại của tôi mà gửi mô hình tệ

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

Đơn giản chỉ cần tạo một lớp mô hình tổng hợp với 2 mô hình bạn cần phải chuyển làm thuộc tính. –

+0

Tôi không hiểu –

Trả lời

31

Bạn có thể tạo viewmodel đặc biệt có chứa cả hai mô hình:

public class CurrencyAndWeatherViewModel 
{ 
    public IEnumerable<Currency> Currencies{get;set;} 
    public Weather CurrentWeather {get;set;} 
} 

và vượt qua nó để xem.

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

Làm cách nào để truy cập vào các mô hình khác nhau từ chế độ xem sau khi chuyển chúng thành công? – Mwas

+1

mô hình. Đơn vị tiền tệ để nhận các thuộc tính từ Đơn vị tiền tệ và model.CurrentWeather tìm các thuộc tính từ CurrentWeather –

3

Có vẻ như bạn có thể sử dụng một mô hình đó là đặc trưng cho quan điểm này.

public class MyViewModel{ 

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

} 

và sau đó từ bộ điều khiển của bạn, bạn có thể vượt qua mới xem mô hình này vào màn hình thay vì:

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

Bạn có thể hơn chỉ cần thêm nhiều thuộc tính để mô hình điểm của bạn có chứa bất kỳ mô hình khác (mô hình thời tiết) và đặt chúng một cách thích hợp.

+0

Bạn có thể sử dụng ViewBag hoặc Tempdata. – caras

5

Bạn phải tạo mô hình mới chứa toàn bộ đối tượng mà bạn muốn chuyển nó để xem. Bạn nên tạo một mô hình (lớp, đối tượng) kế thừa mô hình cơ sở (lớp, đối tượng). Và bạn có thể gửi các đối tượng (mô hình) qua View ["model1"] và View ["model2"] hoặc chỉ là một mảng chứa các đối tượng để truyền và đưa chúng vào trong khung nhìn mà tôi không khuyên .

+0

cách gửi chúng bằng Chế độ xem? làm thế nào để bạn vượt qua nó từ bộ điều khiển để xem –

+0

Trong lớp điều khiển 'ViewData [" CurrentTime "] = DateTime.Now.ToString();' và trong trang xem '

<%: ViewData["CurrentTime"] %>
' để biết thêm chi tiết liên kết này có thể giúp [link] (http: //www.dotnetfunda.com/articles/article1310-how-to-pass-data-from-controllers-to-views-in-aspnet-mvc-tutorial-no-2.aspx) – nesimtunc

Các vấn đề liên quan