asp.net-mvc – MVC中的部分视图

我是MVC的新手,刚刚遇到了我需要一些帮助的场景.

我将简要概述我的场景,好像它是一个我更熟悉的Web窗体应用程序.

场景:

我有一个主页,其中列出了最近的10篇博文,以及“归档树”(按时间顺序列出了年份/月份,以及这些年/月中每个博客条目的链接).

我将此“存档树”创建为用户控件,并在我的主页上输出用户控件.

我还将此存档树用户控件输出到我的主博客页面的一侧 – 博客页面显示一篇博文的详细信息.

我还想在我的Web应用程序中的几个其他页面上重用此存档树控件.

MVC:

我有一个’PhotoController’控制器,它有一个ActionResult方法,负责获取所选照片博客帖子(id)的详细信息.

我想在我的照片博客页面上包含一个部分视图(存档树,它将呈现多个记录),它将遍历多个照片记录(List< Photo>).

我可以创建一个视图模型,它包含一个’Photo’属性(用于呈现单个照片博客记录详细信息)和一个名为’PhotoArchive’的第二个属性,它是一个List< Photo>.

我对这种方法的关注是,当我在整个网站的某些其他部分重新使用这个“存档树”部分视图时,我不一定想要通过相同的视图模型(包含父视图中的“Photo”和“PhotoArchive”对象.例如,我的主页不需要通过“照片”对象传递到呈现主页的视图,但我仍然想在我的主页上的其余HTML输出我的“存档树”部分视图.

我期待有一个简单的解决方案,我目前还不知道对MVC这么新.

解决方法

有几种方法可以实现这一目标:

你可以使用Html.RenderAction()http://www.asp.net/mvc/videos/aspnet-mvc-2-render-action

或者您可以使用不同的视图模型

class HomePageviewmodel {
  IEnumerable<Blog> PhotoArchive { get; set; }
}
class BlogPageviewmodel {
  IEnumerable<Blog> PhotoArchive { get; set; }
  Blog Photo { get; set; }
}

并在调用Html.RenderPartial时传递PhotoArchive属性(“view”,model.PhotoArchive)

或者你可以使用和界面

interface IMyViewPage {
  IEnumerable<Blog> PhotoArchive { get; set; }
}
class Myviewmodel : IMyViewPage{
  //...
  Blog PhotoBlog { get; set; }
}

和Model.RenderPartial(“视图”,模型)

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....