asp.net-mvc - MVC 3 在一个 View 中显示来自不同模型的数据

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

在 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/

相关文章:

c# - 是否保证调用 ActionFilterAttribute 的所有阶段?

java - 使用 Mac 地址从 PC 向 Android 发送字符串消息

javascript - 将 Jquery Globalize 与 MVC 5 结合使用

jquery - 在 asp.net mvc 3 中的 Ajax 响应后使用 Jquery 对部分 View 进行动画处理

c# - 注入(inject)对象的两个实例

c# - 无法加载角色提供者的类型

asp.net-mvc-3 - MVC3 共享布局 - 局部 View

asp.net-mvc - 请求来自 iframe 吗?

vb.net - VB.Net 的 Razor 引用?

asp.net-mvc - ASP.NET MVC 3 远程验证以允许原始值