ASP.NET

MVC:一个View显示多个Model

时间:2014-10-24 16:41:49  作者:WPF之家  来源:http://www.wpf123.com/  查看:580  评论:0
内容摘要:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using QunZhongLuXian.Models;//项目名...
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
    {
        public List<ZuZhiJiGou> zzjgModel { get; set; }
        public List<LingDaoJiangHua> ldjhModel { get; set; }
        public List<GongZuoDongTai> gzdtModel { get; set; }
        public List<WenJianTongZhi> wjtzModel { get; set; }
        public List<XueXiJiaoLiu> xxjlModel { get; set; }

        public viewModel(List<Models.ZuZhiJiGou> zzjgList, List<Models.LingDaoJiangHua> ldjhList, List<Models.GongZuoDongTai> gzdtList, List<Models.WenJianTongZhi> wjtjList, List<Models.XueXiJiaoLiu> xxjlList)
        {
            this.zzjgModel = zzjgList;
            this.ldjhModel = ldjhList;
            this.gzdtModel = gzdtList;
            this.wjtzModel = wjtjList;
            this.xxjlModel = xxjlList;
        }
    }

    public class ZhuYeController : Controller
    {
        QunZhongLuXianContext db = new QunZhongLuXianContext();
        public ActionResult Index()
        {
            var vm = new viewModel(db.ZuZhiJiGous.ToList(), db.LingDaoJiangHuas.ToList(), db.GongZuoDongTais.ToList(), db.WenJianTongZhis.ToList(), db.XueXiJiaoLius.ToList());
            vm.zzjgModel = db.ZuZhiJiGous.ToList();
            vm.ldjhModel = db.LingDaoJiangHuas.OrderByDescending(p => p.ShiJian).ToList();
            vm.gzdtModel = db.GongZuoDongTais.OrderByDescending(p => p.ShiJian).ToList();
            vm.wjtzModel = db.WenJianTongZhis.OrderByDescending(p => p.ShiJian).ToList();
            vm.xxjlModel = db.XueXiJiaoLius.OrderByDescending(p => p.ShiJian).ToList();
            return View(vm);
        }
    }
}

对应/Views/ZhuYe/Index.cshtml视图代码(部分)

@using QunZhongLuXian.Models
@model QunZhongLuXian.Controllers.viewModel//引用ZhuYeControllers中自定义的viewModel类类型

中间省略,下面是通过Foreach循环显示两个Model的列表数据(分别是Model.ldjhModel和Model.gzdtModel)

<div class="box">
                <h1>
                    <span><a href="@Url.Action("Index", "LingDaoJiangHua")">more</a></span>领导讲话
                </h1>
                <ul>
                    @foreach (var item in Model.ldjhModel)
                    {
                        <li>
                            <span class="datetime">@item.ShiJian</span>
                            <a href="@item.LuJing">@item.BiaoTi</a>
                        </li>
                    }
                </ul>
            </div>
            <div class="box">
                <h1>
                    <span><a href="@Url.Action("Index", "GongZuoDongTai")">more</a></span>工作动态
                </h1>
                <ul>
                    @foreach (var item in Model.gzdtModel)
                    {
                        <li>
                            <span class="datetime">@item.ShiJian</span>
                            <a href="@item.LuJing">@item.BiaoTi</a>
                        </li>
                    }
                </ul>
            </div>
          asp.net MVC中,一次默认只能返回一个Model,如果调用多个数据集,只能用ViewData来导来导去,好像很麻烦,所以,可以给model扩展方法来实现...我只是入门学习者,可能不太懂,也描述的不太清楚,如果能有更好的方法或建议..

 

首先,在控制器中定义一个类,内容如下:

 

 

MVC:一个View显示多个ModelCode
MVC:一个View显示多个Model    public class lviewModel
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客    {
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客        public List<Sorts> sortList { getprivate set; }
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客        public List<Articles> artList { getprivate set; }
MVC:一个View显示多个Model        public lviewModel(List<Models.Sorts> sortlists, List<Models.Articles> artlists)
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客        {
MVC:一个View显示多个Model            this.sortList = sortlists;
MVC:一个View显示多个Model            this.artList = artlists;
MVC:一个View显示多个Model        }
MVC:一个View显示多个Model
MVC:一个View显示多个Model    }
MVC:一个View显示多个Model

 

以此来接收两个list,然后 返回的时候

 

 

            Models.ESCMSContext escms = new ESCMS_MVC_SQL.Models.ESCMSContext();

            return View(new lviewModel(escms.sortList(), escms.artList()));

 

在使用的时候

视图文件的第一行要引用

 

 

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ESCMS_MVC_SQL.Controllers.lviewModel>" %>

 

ESCMS_MVC_SQL改成你项目的名称

 

然后就可以

 

 Model.artList

 Model.sortList

 

这样来用了

 

ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客
MVC:一个View显示多个Model
MVC:一个View显示多个Model<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
MVC:一个View显示多个Model
MVC:一个View显示多个Model    <form id="form1" runat="server">
MVC:一个View显示多个Model
MVC:一个View显示多个Model    <h2>list</h2>
MVC:一个View显示多个Model
MVC:一个View显示多个Model        <table>
MVC:一个View显示多个Model        <tr>
MVC:一个View显示多个Model            <th></th>
MVC:一个View显示多个Model            <th>
MVC:一个View显示多个Model                ArtID
MVC:一个View显示多个Model            </th>
MVC:一个View显示多个Model            <th>
MVC:一个View显示多个Model                ArtTitle
MVC:一个View显示多个Model            </th>
MVC:一个View显示多个Model            <th>
MVC:一个View显示多个Model                ArtSort
MVC:一个View显示多个Model            </th>
MVC:一个View显示多个Model            <th>
MVC:一个View显示多个Model                ArtSort
MVC:一个View显示多个Model            </th>
MVC:一个View显示多个Model        </tr>
MVC:一个View显示多个Model
MVC:一个View显示多个Model    <% foreach (var item in Model.artList)
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客       { %>
MVC:一个View显示多个Model    
MVC:一个View显示多个Model        <tr>
MVC:一个View显示多个Model            <td>
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客                <%= Html.ActionLink("Edit""Edit"new { id=item.ArtID }) %> |
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客                <%= Html.ActionLink("Details""Details"new { id=item.ArtID })%>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model            <td>
MVC:一个View显示多个Model                <%= Html.Encode(item.ArtID) %>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model            <td>
MVC:一个View显示多个Model                <%= Html.Encode(item.ArtTitle) %>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model            <td>
MVC:一个View显示多个Model                <%= Html.Encode(item.ArtSort) %>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model <td>
MVC:一个View显示多个Model                <%= Html.Encode(item.Sorts.SortName) %>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model        </tr>
MVC:一个View显示多个Model    
MVC:一个View显示多个Model    <% } %>
MVC:一个View显示多个Model
MVC:一个View显示多个Model    </table>
MVC:一个View显示多个Model    
MVC:一个View显示多个Model        <table>
MVC:一个View显示多个Model        <tr>
MVC:一个View显示多个Model            <th>aa</th>
MVC:一个View显示多个Model            <th>bb</th>
MVC:一个View显示多个Model        </tr>
MVC:一个View显示多个Model
MVC:一个View显示多个Model    <% foreach (var item in Model.sortList)
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客       { %>
MVC:一个View显示多个Model    
MVC:一个View显示多个Model        <tr>
MVC:一个View显示多个Model            <td>
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客                <%= Html.ActionLink("Edit""Edit"new { /* id=item.PrimaryKey */ }) %> |
ASP.net MVC 同一view或页面使用多个Model或数据集的方法 - 风过无痕 - 我的博客                <%= Html.ActionLink("Details""Details"new { /* id=item.PrimaryKey */ })%>
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model            <td>
MVC:一个View显示多个Model                <%= Html.Encode(item.SortName) %> 
MVC:一个View显示多个Model            </td>
MVC:一个View显示多个Model        </tr>
MVC:一个View显示多个Model    
MVC:一个View显示多个Model    <% } %>
MVC:一个View显示多个Model
MVC:一个View显示多个Model    </table>
MVC:一个View显示多个Model    </form>
MVC:一个View显示多个Model
MVC:一个View显示多个Model</asp:Content>
MVC:一个View显示多个Model
MVC:一个View显示多个Model
MVC:一个View显示多个Model

 

这样就可以了..还算简单,就是之前有些绕...我觉得微软应默认提供这样的类,写起来才方便..



小记:单个View页面返回多个model数据集  做下笔记。
namespace Models
{
    public class Articel
    {
        public int Id { get; set; }
        [Required]
        [DisplayName("标题")]
        [MaxLength(100)]
        public string Title { get; set; }
    }
 
    public class Cate
    {
        public int CateId { get; set; }
        [DisplayName("文章类别")]
        [Required]
        public string CateName { get; set; }
 
        public List<Article> article { get; set; }
    }
 
    public class ListModel
    {
        /// <summary>
        /// 文章
        /// </summary>
        public IList<Article> artcleModel { get; set; }
 
        /// <summary>
        /// 文章类别
        /// </summary>
        public IList<Cate> cateModel { get; set; }
 
    }
}
 
 
Action方法编写如下:
 
 public ActionResult Index()
        {
            var model = new ListModel();
            model.artcleModel= Articel.ToList();
            model.cateModel= Cate.ToList();
            return View(model);
        }
 
View层引用如下:
@model Models.ListModel
 
@foreach (var tt in Models.artcleModel)
            {
             @tt.Title
            }
 
@foreach (var tt in Models.cateModel)
            {
              @tt.CateName
            }

标签:MVC 一个 View 显示 多个Model 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

上一篇:没有了
下一篇:@html.ActionLink的几种参数格式
相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
鄂ICP备13006396号