2012-07-14 10 views
7

Tôi có một bộ điều khiển tạo ra một mô hình và gọi một cái nhìn qua mô hình như một tham số. Trong Chế độ xem, có chỉ thị @model chỉ định loại Mô hình. Tôi muốn sử dụng lại cùng một Chế độ xem, nhưng chuyển một mô hình khác từ bộ điều khiển. Có thể tự động (hoặc có điều kiện) chỉ thị thay đổi @model trong View?làm thế nào để thay đổi chỉ thị @model thành một mô hình khác trong chế độ xem dao cạo?

Ví dụ, trong hành động điều khiển của tôi:

var contactsModel = db.GetContacts(); 
var companiesModel = db.GetCompanies(); 
return (someCondition)? View(contactsModel):View(companiesModel); 

Sau đó, làm thế nào tôi có thể xác định @model trong một Xem chỉ để thỏa mãn cả hai mô hình? Tôi muốn cùng một chế độ xem để hiển thị thông tin dựa trên loại mô hình được truyền.

Cảm ơn bạn.


UPDATE:

Cảm ơn, nhưng tôi cần phải sử dụng một trong Xem thông thường chỉ với các mô hình khác nhau.

Có thể, đây là cách này có thể được thực hiện.

Trong một Xem tôi xác định:

@model IEnumerable<MvcApplication1.Models.IBaseInterface> 

Trong lớp mẫu tôi xác định:

public interface IBaseInterface { } 

public class Contact: IBaseInterface {} 

public class Company: IBaseInterface {} 

Sau đó, trong một Xem tôi sử dụng:

@if (Model is List<Contact>) { 
    @foreach (var item in (List<Contact>)Model) 
     { // Here item has type Contact } 
} 

@if (Model is List<Company>) { 
    @foreach (var item in (List<Company>)Model) 
     { // Here item has type Company } 
} 

trình một cách hoàn hảo :)

Trả lời

4

Có thể tự động (hoặc có điều kiện) thay đổi @model chỉ thị trong Xem?

số

Nếu bạn cần phải vượt qua mô hình khác nhau này có nghĩa là bạn cần phải quan điểm khác nhau:

return (someCondition) 
    ? View("Contacts", contactsModel) 
    : View("Companies", companiesModel);\ 

Một nguyên tắc cơ bản trong ASP.NET MVC là như sau: a view model per view.

0

Các giải pháp dễ dàng và thoải mái sẽ được sử dụng xem mô hình và buộc các quan điểm cho rằng mô hình xem và từ các hoạt động điều khiển bạn có thể chuyển đổi các mô hình vào xem mô hình và vượt qua nó để xem.

Nếu bạn là người hâm mộ động lực và các thuộc tính của hai mô hình giống như tùy chọn khác là bạn có thể buộc chế độ xem thành mô hình dynamic.