实施局部视图

本文关键字:视图 施局部 | 更新日期: 2023-09-27 18:20:01

我有许多属于一个组的Item。查看项目时,您将在页面的顶部框组件中看到有关该项目所属组的一些信息。这些项目有许多视图("简单详细信息"、"完整详细信息"等),每个视图上都会显示此顶部组件。

我能想到的实现这一点的唯一方法是:

  1. 使用项目信息创建ItemViewModel
  2. 创建一个GroupViewModel,其中包含用于填充顶部组件的信息以及ItemViewModels列表
  3. 为顶部的"组"构件创建局部视图
  4. 将GroupViewModel传递到每个项目视图页面

我真的不喜欢这种方法,因为它会导致GroupViewModel成为一个传递给所有Item视图的"超级"ViewModel。我有点希望只向ItemViewModels传递Item视图,但对于Item视图来说,包含这个顶部组件的干净方式是什么?

(附带问题:是否可以将url结构设置为"/Group/12/Item/43"?)

实施局部视图

我认为您的ViewModel应该类似

public class SomeViewModel
{
    public Group Group { get; set; }
    public List<Item> Items { get; set; }
}

当你的视图看起来像这样时:

<!-- top section start -->
@Html.Partial("Details", Model.Group)
<!-- top section end -->
@foreach (Item item in Items)
{
    @Html.DisplayFor(item)
}