一个视图中的3个模型的ViewModel

时间:2014-06-14 14:53:03

标签: c# asp.net-mvc-4 viewmodel

您好我正在使用MVC4尝试使用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);
    }

2 个答案:

答案 0 :(得分: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; }
}

然后,根据您需要的任何信息,在控制器中构建视图模型。

请记住,视图模型视图建模。如果您在视图中需要该信息,请将这些属性放在视图模型中。您的视图模型不应该直接绑定到您的域/业务实体。用不同的目的是另一回事。养成将它们分开的习惯。

答案 1 :(得分:-1)

我只为该页面创建一个ViewModel,填充该ViewModel的属性并将其传递给视图

e.g。

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