在 MVC 3 View 中,我想显示单个契约(Contract)和声明列表,用户将能够创建新声明。我为契约(Contract)和 claim 创建了不同的 View ,如何合并它们以便只有一个 View 。
达林,
当 View 正在寻找两个字符串时,如何传递 MyViewModel 的实例?
public ActionResult Details(int id)
{
MyViewModel myView = new MyViewModel ();
return View(_repository.GetContract(id), myView);
}
谢谢
我使用的是 PartialViews Html,但我看不到如何将模型作为参数传递。
契约(Contract) View
@model Portal.Models.Contracts
@使用 Portal.Models
显示数据。
<div>
@{
Html.RenderPartial("_Claim", Portal.Models.Contracts);
}
</div>
我收到错误 CS0119:“Models.Contracts”是“类型”,在给定的上下文中无效。
数据在这里绑定(bind)到合约 View
public ActionResult Details(int id)
{
return View(_repository.GetContract(id);
}
数据如何绑定(bind)到
PartialView _Claim
类型为 IEnumerable<Models.Claims>
?
最佳答案
您可以定义一个 View 模型来包装这两个模型:
public class MyViewModel
{
public Contract Contract { get; set; }
public Claim[] Claims { get; set; }
}
然后让您的 Controller 操作将 MyViewModel 的实例传递给 View ,并在此 View 中使用显示模板:
@model MyViewModel
@Html.DisplayFor(x => x.Contract)
@Html.DisplayFor(x => x.Claims)
然后为
Contract
定义显示模板和 Claim
模型( ~/Views/Shared/DisplayTemplates/Contract.cshtml
和 ~/Views/Shared/DisplayTemplates/Claim.cshtml
)。
关于asp.net-mvc - MVC 3 在一个 View 中显示来自不同模型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7495583/