MVC3在列表视图中传递父实体

时间:2011-02-08 16:03:18

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

我是MVC3的新手。我正在努力实现以下目标:

包含部分列表的页面:

@model IEnumerable<Demo.Models.Section>

我遍历各个部分并显示一些信息。每个部分都有一个项目列表。这些项目通过部分视图显示:

@model IEnumerable<Demo.Models.StringItem>

在同一个局部视图中,我有一个actionlink来创建一个新的StringItem。但是在创建一个新的StringItem时,我需要传递它所属的Section ID。当该部分已经有Items时,我可以传递集合中第一个项目的SectionID。但是如果列表为空,我不知道如何传递需要创建StringItem的Section ID。

我试过了:

@Html.ActionLink("Create New", "CreateStringItem", ViewContext.ParentActionViewContext.ViewData.Model)

但是这将传递该页面上的所有部分,这是有道理的,因为父视图是Ienumerable Section。

前进传递父ID的方法是什么?

1 个答案:

答案 0 :(得分:0)

使用@model Demo.Models.Section而不是IEnumerable,然后以Model.Items和id访问您的项目数组作为Model.ID或其他东西。

或者创建像

这样的新模型
class SectionModel {
    public int ParentID { get; set; }
    public IEnumerable<Demo.Models.StringItem> Items { get; set; }
}

然后将其用作部分视图的模型。

以这种方式访问​​父视图将是代码体系结构错误。