在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>
?
答案 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)
然后定义Contract
和Claim
模型(~/Views/Shared/DisplayTemplates/Contract.cshtml
和~/Views/Shared/DisplayTemplates/Claim.cshtml
)的显示模板。