在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,做法完全是一样的。

ViewModel在MVC3中的应用:一个view显示多个model的更多相关文章

  1. MVC:一个View显示多个Model(多个Model你可以使用ViewBag或ViewData , 或者:Model["myInfo"] as)

    MVC:一个View显示多个Model 多个Model你可以使用ViewBag或ViewData , 或者:Model["myInfo"] as. 比如: Tuple<str ...

  2. 在Android中动画移动一个View的位置,采用Scroller类实现Android动画之 View移动

    在Android中动画移动一个View的位置,采用Scroller类实现 今天说最近自己遇到的一个问题,就是要用动画效果来移动一个VIew的位置. 这个具体的情况是,需要做一个SlidingMenu的 ...

  3. ViewModel在MVC3中的应用:实现多字段表格的部分更新

    假设我们有这样一张用户表: public class F_users { [Key] [Display(Name="用户名:")] [Required(ErrorMessage=& ...

  4. 订单业务楼层化 view管理器和model管理器进行了model和view的全面封装处理 三端不得不在每个业务入口上线时约定好降级开关,于是代码中充满了各种各样的降级开关字段

    京东APP订单业务楼层化技术实践解密 原创 杜丹 留成 博侃 京东零售技术 2020-09-29 https://mp.weixin.qq.com/s/2oExMjh70Kyveiwh8wOBVA 用 ...

  5. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  6. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  7. IOS中封装一个View的思路

    一.封装一个View的思路 1.将View内部的业务逻辑(显示内容)封装到View中 2.一般情况下,View的位置应该由父控件来决定,也就是位置不应该固定死在View内部 3.至于View的宽高,根 ...

  8. 从一个子视图或者一个View中刷新其他UITableView

    被问到了一个问题:如何从一个子视图或者一个View中刷新其他UITableView,常规的写法可能是这样的 TestTVC*testTVC =[[TestTVC alloc] init];[testT ...

  9. Umbraco -- 在Visual Studio中新建一个View 如何在Umbraco back office 中显示出来

    在使用Umbraco中的过程中,遇到一个问题. 我在项目中(Visual Studio),添加了一个View---Test.cshtml. 然后进入到该Umbraco项目的back office, 在 ...

随机推荐

  1. android部分机型(HTC D610) menu键的显示问题

    今天遇到了一个很恶心的问题... htc某些机器的menu键是在屏幕里的,可以由系统控制显示和隐藏.今天遇到了一个问题,有两个应用,一个运行后显示menu键,另一个不显示... 找了好一会儿,发现是  ...

  2. android判断pad还是手机

    第一种. Rect frame = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); if (fr ...

  3. 简单计算器--hdu1237(栈的运用)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237  这是单纯的本题答案: #include<stdio.h> #define N 11 ...

  4. Java学习-003-JDK、JRE、JVM简介

    此文主要对 JDK.JRE.JVM进行简单的介绍,给各位亲们一个参考.若有不足之处,敬请各位大神指正,不胜感激! 一.基本概念 JDK(Java Development Kit:Java 开发工具包) ...

  5. iOS 的 XMPPFramework 简介

    XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开 ...

  6. textarea 默认文字获取焦点失去焦点

    <textarea name="textarea" cols="" title="contactForm" class="t ...

  7. 给Windows机器创建软连接

    给Windows机器创建软连接 http://blog.csdn.net/w6611415/article/details/32084677

  8. Android系统框架

    从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层.应用程序框架层.系统运行库层以及Linux内核层 应用程序层: 简单说就是我们用户肉眼能看到的应用程序,如SMS短信客 ...

  9. SQL Server中的SQL语句优化与效率问题

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select * from table1 where name='zhan ...

  10. [ROS]2 尝试编译OrbSLAM

    主要参考http://blog.csdn.net/dourenyin/article/details/48055441 1.编译g2o的过程中, 先是出现Eigen3依赖项的问题,要求Eigen3最低 ...