2014-06-14 3 views
-1

Привет Я использую MVC4 пытаюсь использовать ViewModel, так что я могу получить доступ к данным 3 модели ...ViewModel 3 моделей в одном представлении

Я хочу, чтобы показать список следующую информацию: (название проекта, Наименование поставщика, поставщик ответ)

вот мой код:

public class Projects 
{ 
    [Key] 
    public int ProjectId { get; set; } 
    public string ProjectName { get; set; } 
    public string Descriptions { get; set; } 
} 

public class SubmitedProjects 
{ 
    [Key] 
    public int ProjectId { get; set; } 
    public int SupplierId { get; set; } 
    public string SupplierAnswerr { get; set; 
} 

public class Supplier 
{ 
    [Key] 
    public int SupplierId { get; set; } 
    public string SupplierName { get; set; 
} 

Моя попытка зрения модели:

public class ModelInfo 
    { 
    public ProjectEntry oProjects { get; set; } 
    public SubmittedProject oSubmitedProjects { get; set; } 

    } 

Контроллер:

public ActionResult MProjects () 
    { 

     SubmittedProjectContext d = new SubmittedProjectContext(); 
     ProjectContext ds = new ProjectContext(); 
     List <ModelInfo> r = new List <ModelInfo>(); 
     ModelInfo rr = new ModelInfo(); 

     rr.oSubmitedProjects=new SubmittedProject(); 
     rr.oProjects=new Projects(); 
     r.Add(rr); 
     return View(r); 
    } 
+0

Каков ваш вопрос? – frenchie

+0

Вы хотите иметь данные этих 3 классов в поле зрения? –

+0

да все они в одном взгляде – user1476956

ответ

1

Я хочу, чтобы показать список следующую информацию: (название проекта, Поставщик Название, Поставщик ответ)

Тогда ваш взгляд модель класс должен выглядеть следующим образом:

public class ProjectViewModel 
{ 
    public string ProjectName { get; set; } 
    public string SupplierName { get; set; } 
    public string SupplierAnswer { get; set; } 
} 

Если вам нужно использовать несколько проектов на одном виде:

public class MultipleProjectsViewModel 
{ 
    public IList<ProjectViewModel> Projects { get; set; } 
} 

Затем вы создаете свою модель представления в своем контроллере на основе любой информации, необходимой для ее создания.

Запомните, посмотреть модель модели вид. Если вам нужна эта информация в вашем представлении, поместите эти свойства в свою модель просмотра. Ваша модель просмотра является не предполагается быть связанным с вашим доменом/коммерческими объектами. Другое дело, что это другая цель. Входите в привычку отделять их.

+0

почему MultipleProjectsViewModel ...? я не понимаю?! Мне нужно показать все SubmitedProjects в моем SubmitedProjectsContext. – user1476956

+0

Можете ли вы показать мне, как будет выглядеть контроллер? – user1476956

+0

Нет, я не могу, потому что я не знаю, какова ваша логика. Вам просто нужно создать экземпляр новой модели представления (один из вышеперечисленных классов) и создать информацию на основе объектов в вашей базе данных, а затем передать модель представления в представление. Try Googling "просмотреть модели в asp.net mvc." Дело в том, что вы * не передаете объекты из своей базы данных в свой вид *, вы создаете объекты * view model * и используете их. –

-1

Я бы просто сделать ViewModel для этой страницы, заполнить свойства этого ViewModel и передать его мнению

например

public class ExampleViewModel{ 
    public string ProjectName { get; set; } 
    public string SupplierName { get; set; } 
    public string SupplierAnswer { get; set; } 
} 

в контроллере

ExampleViewModel evm = new ExampleViewModel(); 
evm.ProjectName = "Name"; 
evm.SupplierName = "Supplier"; 
evm.SupplierAnswer = "Answer"; 
return View(evm); 
+0

это, скорее всего, правильный путь. Я думаю, вы могли бы использовать automapper, чтобы иметь дело с отображением всего. –

+0

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

+0

Предполагая, что эти классы являются вашими сущностями (из EF или какой-либо другой ORM), вы можете просто загрузить данные в этих сущностях и создать экземпляр ViewModel свойства со свойствами из ваших сущностей, такие как 'evm.ProjectName = projects.ProjectName' – grabthefish

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