你好,我正在使用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;
}
My try of view model:
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);
}
我要显示以下信息的列表:(项目名称,供应商名称,供应商回答)
那么你的视图模型类应该是这样的:
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; }
}
然后,你在你的控制器中建立你的视图模型,基于你需要的任何信息。
记住,视图模型建模视图。如果你需要视图中的信息,把那些属性放到视图模型中。您的视图模型不应该直接绑定到您的域/业务实体。这是一个不同的东西,服务于不同的目的。养成把它们分开的习惯。
我将为该页面创建一个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);