首页 > Web开发 > 详细

探讨mvc下linq多表查询使用viewModel的问题

时间:2015-10-10 20:08:23      阅读:299      评论:0      收藏:0      [点我收藏+]

最近在开发mvc3的时候发现了一个问题,就是如何在view页面显示多表查询的数据,最简单的办法就是使用viewmodel了,以下本人使用viewmodel来实现多表查询的3中方法,

先贴代码再说:

1  第一种是将页面显示多表的数据(也就是汇总各个model表的字段),然后再viewmodel中显示

public class ResultAdList
    {
        public int A_Id;
        public string A_userid;
        public int B_Id;
        public string B_typename;
    }
public class AdRepository
    {
        private DataAdDataContext db = new DataAdDataContext();
 
        public IQueryable<ResultAdList> AdList { get; private set; }
         public AdRepository()
        {
            this.AdList = from a in db.R_ad_list
                          join b in db.R_ad_type on a.A_typeid equals b.id
                          select new ResultAdList
                          {
                              A_Id = a.id,
                              A_userid = a.A_userid,
                              B_Id = b.id,
                              B_typename=b.T_ad_typename
              };
        }
 
}
            public ActionResult Index()
            {
                return View("Index", new AdRepository());
            }
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Dmj.Models.AdRepository>" %>
 
 <% foreach (var item in Model.AdList) { %>
 <% } %>

接着第二中方法:

public class demoshopViewModels

    {

        public IEnumerable<商店> shop { get; set; }

        public IEnumerable<演示> demo { get; set; }

    }

linq方法可参照AdRepository方法,大同小异,路过

view中这样写

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication.ViewModels.demoshopViewModels>" %>
<%foreach (var item in Model.shop)

  {

      //這裡是shop Models

  } %>

  

<%foreach (var item in Model.demo)

  {

      //這裡是demo Models

  } %>

第三种直接上图:

model中

 技术分享

viewmodel图

技术分享

技术分享

view图

技术分享

 

     目测三种方法都差不多,只有细微的差别,个人觉得第三中最简单也是最常用的

探讨mvc下linq多表查询使用viewModel的问题

原文:http://www.cnblogs.com/superfeeling/p/4868056.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!