ViewModel在MVC3中的应用:一个view显示多个model
应用 一个 显示 多个 View model mvc3 ViewModel
2023-09-11 14:17:16 时间
在mvc3中,默认是一张数据表对应一个model,一个视图 view只显示一个model。
但是有些时候,我们一个视图上可能需要显示多个model的内容,即一个网页可能要展示多张表的信息,那怎么办呢,这时候,ViewModel就能派上用途了。
ViewModel,顾名思义,专为view服务的model,专门为view视图准备的model。
我这里假设有两个张数据表,Article表和Information表,都需要在首页上显示出来,看看下面的步骤:
一、先写出两张表各自对应的model和相应的DbContext文件,这一步比较简单,我就省略了。
二、创建一个类(ViewModel),取名为indexData
public class IndexData { public IEnumerable<Information> Information { get; set; } public IEnumerable<Article> Article { get; set; } public IndexData() { Entities db = new Entities(); this.Information = db.Information.ToList(); this.Article = db.Article.ToList(); } }
三、控制器Controller
public ActionResult Index() { IndexData ind = new IndexData(); return View(ind); }
四、view视图
@model IndexData
<div> <ul> @foreach (var item in Model.Information.Take(8)) { <li>@Html.DisplayFor(m => item.InfoTitle)</li> } </ul>
</div>
<div> <ul> @foreach (var item in Model.Article.Take(8)) {
<li>@Html.DisplayFor(m => item.ArticleTitle)</li> } </ul> </div>
如果Article表又想分成两部分来显示,则可以这样:
@model IndexData
<div> <ul> @foreach (var item in Model.Article.Where(c=>c.type=="news").Take(8)) { <li>@Html.DisplayFor(m => item.InfoTitle)</li> } </ul> </div>
<div> <ul> @foreach (var item in Model.Article.Where(c=>c.type=="story").Take(8)) { <li>@Html.DisplayFor(m => item.InfoTitle)</li> } </ul> </div>
我这里的ViewModel里面只涉及到了两张表,实际上更多张表也是一样的。有些门户网站的首页,可能需要显示十几个model,做法完全是一样的。
相关文章
- 新闻发布系统,B/S模式下的三层应用
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到SUSE Linux Enterprise Server 12 SP2 64 位(GNOME 版本3.20.2)
- 3分钟创建一个游戏类容器应用【华为云分享】
- PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用
- KubeVela 1.4:让应用交付更安全、上手更简单、过程更透明
- 使用 React 和 Flux 创建一个记事本应用
- 数据挖掘时功能和一个聚类分析应用案例
- SAP UI5 应用开发教程之九十一 - 如何使用客户端 JSON 模型构建一个 Master-Detail-Detail 布局中的列表页面试读版
- SAP UI5 应用开发教程之七十四 - SAP UI5 应用使用 OData V4 显示 Table 表格数据的一个陷阱试读版
- 一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录
- SAP Spartacus 服务器端 nodejs 应用里渲染 Angular Component 的一个例子
- 推荐一个可以把网页背景色调成护眼色的Chrome扩展应用
- 使用View modification扩展SAP Fiori应用的一个案例
- 如何免费试用SAP的Fiori应用
- 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
- 如何检测SAP UI5应用里控件的初始化和析构时间点
- React应用里Invalid hook call错误消息的处理
- C++:C++编程语言学习之数学运算&运算符及其优先级的简介、案例应用之详细攻略
- AGI:人工智能大模型领域实战篇—设计一个类似GPT-3.5/GPT-4的大模型从开发→部署→应用需要经过的八大步骤之详细介绍
- 一个合格的CloudNative应用:程序当开源软件编写,应用配置外置
- Qt应用开发常用功能(持续更新)
- JavaSE学习总结(十六)—— 泛型与泛型应用
- Ingress 应用
- Android 推断当前Activity是不是最后一个Activity 以及 应用或Activity是否存在
- 使用filebeat+logstash收集Nginx应用日志