从一个操作结果向两个或多个视图发送数据

时间:2013-09-13 14:47:44

标签: c# asp.net-mvc asp.net-mvc-4

我正在创建一个MVC4应用程序,我从中获取Webservice

的数据

我的HomeControllerActionResult Index()

请考虑以下代码:

public ActionResult Index(string id) {  
    // showing information about resource      
    Myproject.Data.ResourceData resourceData = new Myproject.Data.ResourceData();  
    var resource1 = resourceData.showResource(id);  
    return View(resource1);  
}

ResourceData类包含FirstNameLastNamepublic List<Project> Projects等属性。 在resource1我获得了个人信息和项目信息等数据。

我有两个标签:个人信息项目信息。我想将resource1的数据拆分为个人信息标签中的个人信息和私人信息标签中的私人信息

2 个答案:

答案 0 :(得分:0)

你可以通过将它们视为简单视图来简单地完成它。将关注点分开(公共,私有和单个视图中的元素,只使用jquery中的制表符,甚至引导程序都是惊人的。它会将问题分开,并且你会更容易思考。

答案 1 :(得分:0)

在视图中获得数据(模型)后,您可以为每个选项卡使用子部分视图。 然后,您只需将模型或模型的一部分传递给每个PartialView。

编辑:添加一些代码

您的索引视图是强类型的,并且会收到ResourceData模型。然后,在索引视图中,您可以显示2个部分视图,以这种方式处理这两种类型的数据:

<div class="PersonalTab">
     @Html.Partial("PersonalData", Model)
</div>

<div class="ProjectsTab">
     @Html.Partial("ProjectsData", Model)
</div>

PersonalData”和“ProjectsData”是您需要在Index所在的同一文件夹中添加的PartialView的名称。

如果你看到,我只是将整个Model对象传递给每个......这样可行......但是你可以这样做:

@Html.Partial("ProjectsData", Model.ListOfProjects)

因此,在每个部分中,您需要声明Model的类型: @model Myproject.Data.ResourceData(如果您通过整个模型)

@model IEnumerable<Project>(如果您只传递项目列表)

注意:上面的代码解决了在多个偏见视图中拆分视图的方法。创建选项卡的逻辑更像是一个javascript的东西。