mvc 一个View显示多个Model

今天做到这个,记录一下。

解决的办法是。定义一个class:viewModel。把要显示的model放进去。

Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcService.Models;

namespace MvcService.Controllers
{
    public class viewModel
    {
        public List<New> news { get; set; }
        public List<Category> categories { get; set; }

        public viewModel(List<New> newsList, List<Category> categoriesList)
        {
            this.news = newsList;
            this.categories = categoriesList;
        }
    }

    public class HomeController : Controller
    {
        private ServiceEntities db = new ServiceEntities();

        public ActionResult Index()
        {
            var vm = new viewModel(db.News.ToList(), db.Categories.ToList());

            vm.news = (from n in db.News
                       where n.isDel == false && n.state == true
                       orderby n.createTime descending
                       select n).Take(16).ToList();

            vm.categories = (from n in db.Categories
                             where n.pId == 0 && n.isDel == false && n.state == true
                             select n).ToList();

            return View(vm);
        }
    }

View:

@using MvcService.Models
@model MvcService.Controllers.viewModel //引用HomeControllers中自定义的viewModel
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_IndexLayout.cshtml";
}
<div class="main_1">
    <h2>热点问题</h2>
    <ul>
        @if (Model != null)
        {
            foreach (var n in Model.news)
            {
            <li><a href="~/home/newsdetails">@(n.title.Length > 25 ? n.title.Substring(0, 25) + "..." : n.title)</a> </li>
            }
        }
    </ul>
    <div class="clear"></div>
</div>
<!--main_1结束-->

<div class="main_2">
    @if (Model != null)
    {
        foreach (var c in Model.categories)
        {
        <dl>
            <dt>@c.name</dt>
            <dd>
                <a href="~/home/newslist">会员信息</a>
                <a href="~/home/newslist">注册及登录</a>
            </dd>
        </dl>
        }
    }
</div>
<!--main_2结束-->

附上效果图.

还有一个问题,我想橙色的显示该类别的子类别。要怎么写。。大神指导下。。

我给出category的表结构。  pId = 0 代表的是父级菜单。

时间: 2024-12-17 06:45:41

mvc 一个View显示多个Model的相关文章

ViewModel在MVC3中的应用:一个view显示多个model

在mvc3中,默认是一张数据表对应一个model,一个视图 view只显示一个model. 但是有些时候,我们一个视图上可能需要显示多个model的内容,即一个网页可能要展示多张表的信息,那怎么办呢,这时候,ViewModel就能派上用途了. ViewModel,顾名思义,专为view服务的model,专门为view视图准备的model. 我这里假设有两个张数据表,Article表和Information表,都需要在首页上显示出来,看看下面的步骤: 一.先写出两张表各自对应的model和相应的D

一个View显示多个Model

ZhuYecontrollers代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using QunZhongLuXian.Models;//项目名称,引用自定义的Model namespace QunZhongLuXian.Controllers {     public class viewModel     {      

仅此一文让你明白ASP.NET MVC 之View的显示

有些人要问题,为什么我要学框架?这里我简单说一下,深入理解一个框架,给你带来最直接的好处: 使用框架时,遇到问题可以快速定位,并知道如何解决: 当框架中有些功能用着不爽时,你可以自由扩展,实现你想要的操作,甚至可以拿到源码直接修改: 想成为框架师的必经之路: 提取框架中的优秀代码和思想,为己所用: 更多好处,你可以自己去体会,有兴趣的可以看一下asp.net中 mvc部分的源码:http://aspnetwebstack.codeplex.com/ 本文目的 上一篇文章是让你明白MVC最核心的两

iOS判断一个View是否显示在屏幕上

有时候做UI的时候,比如需要判断scrollView中一个btn是否显示在屏幕上,可以用以下代码: #pragma mark - 返回一个View所在的位置x,y,是否在rect坐标里面 - (BOOL)isInScreenView:(UIView *)inView withRect:(CGRect)rect{ return CGRectIntersectsRect(inView.frame, rect); } #pragma mark - 返回判断screenRect所在的位置x,y,是否在r

【.NET MVC】View

通过阅读一些书籍,结合源代码,稍微深入的学习了Asp.Net MVC中的视图View 任何类型的响应都可以利用当前HttpResponse来响应,MVC可以通过Controller的Response属性和HttpContext属性以及ControllerBase的ControllerContext属性获得当前的HttpResponse 而.Net MVC把针对请求的响应实现封装在一个抽象类ActionResult中,实现方法是ExecuteResult 那么ExecuteResult方法如何被调

OAF_OAF架构MVC系列 - View的概述(概念)

2014-06-18 BaoXinjian 一.摘要 上文介绍在OAF按MVC的架构,分为三层,即Model-View-Contorl, 对OAF 的View层的一下基本概念和一些小案例 Page - 页面概述 Page的关键属性 Item的关键属性 Reusable Components - 可重用组件 控件的继承Extend 控件的共享Shared Attribute Sets - 控件属性组 通过Item的Attribute Set 属性手工设定 通过attrSet.setAttribut

NEt中MVC的View和Controller的几种传值方式

1: ViewData传值方式ViewData的生命周期和View相同, 只对当前View有效.   ViewData["zd"] = dfdfd2:TempData传值方式   可以跨Action传递   TempData的数据至多只能经过一次Controller传递, 并且每个元素至多只能被访问一次,     例如一个用法为,抛出一个异常.跳转到error页面public ActionResult Index3(){      TempData["tempIndex&qu

MVC中View视图调用Controllers里返回的值

在MVC中前台页面调用控制器里面的方法跟ASP中<% %>.<%= %>是有区别的,在MVC Razor引擎中,如果需要输出值,先声明一个变量去接收,然后用@输出就可以了. GetDictionaryNameByID()方法返回的是一个string类型的, 控制器的路径地址,这个地址在页面调用里面的方法会用到 前台View调用,注意:MVC里面显示输出得先声明一个变量去接收,然后在输出 最终显示效果如下图: MVC中View视图调用Controllers里返回的值

MVC应用程序显示上传的图片

前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件(续)>http://www.cnblogs.com/insus/p/3594834.html,我们练习了上传文件,当然上传图片也是一样. 此篇我们练习,怎样在MVC应用程序中显示用户上传的图片.为了接近更真实的练习,Insus.NET决定对以前的程序修改一下,就是上传的目录把原来的Temp目录改为UploadFiles目录.也就是