MVC 3在一个视图中显示来自不同模型的数据

时间:2011-09-21 06:44:56

标签: asp.net-mvc asp.net-mvc-3

在MVC 3视图中,我想显示单个合同和声明列表,用户将能够创建新的声明。我为Contract和Claims创建了一个不同的视图,我如何合并它们,以便只有一个视图。


达林,

当视图正在查找两个字符串时,如何传递MyViewModel的实例?

public ActionResult Details(int id)
{
   MyViewModel myView = new MyViewModel ();
   return View(_repository.GetContract(id), myView); 
}

由于


我使用的是PartialViews Html,但我没有看到如何将模型作为参数传递。

合同视图 @model Portal.Models.Contracts @using Portal.Models

显示数据。

<div>
    @{
      Html.RenderPartial("_Claim", Portal.Models.Contracts); 

    }
</div>

我收到错误CS0119:'Models.Contracts'是'type',在给定的上下文中无效。

数据绑定到此处的合同视图

public ActionResult Details(int id)
{
    return View(_repository.GetContract(id);
}

数据如何绑定到PartialView _Claim类型IEnumerable<Models.Claims>

的{{1}}

1 个答案:

答案 0 :(得分:6)

您可以定义一个视图模型来包装这两个模型:

public class MyViewModel
{
    public Contract Contract { get; set; }
    public Claim[] Claims { get; set; }
}

然后让您的控制器操作将MyViewModel的实例传递给视图,并在此视图中使用显示模板:

@model MyViewModel

@Html.DisplayFor(x => x.Contract)
@Html.DisplayFor(x => x.Claims)

然后定义ContractClaim模型(~/Views/Shared/DisplayTemplates/Contract.cshtml~/Views/Shared/DisplayTemplates/Claim.cshtml)的显示模板。