zoukankan      html  css  js  c++  java
  • MVC5 DBContext.Database.SqlQuery获取对象集合到ViewModel集合中(可以利用这个方法给作为前台视图页cshtml页面的@model 源)

    首先我们已经有了一个Model类:

    using System;
    using System.Data.Entity;
    using System.ComponentModel.DataAnnotations;

    namespace MvcEntitiyFrameWork.Models
    {
    public class Movie
    {
    public int ID { get; set; }
    public string Title { get; set; }

    public int DirectorID { get; set; }

    [Display(Name = "上映日期")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
    public DateTime ReleaseDate { get; set; }

    public decimal Price { get; set; }

    public int GenreID { get; set; }
    public virtual MovieGenre MovieGenre { get; set; }
    public virtual Director Director { get; set; }
    }

    定义一个ViewModel类

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;

    namespace MvcEntitiyFrameWork.ViewModels
    {
    public class MovieQuery
    {
    [DataType(DataType.Date)]
    public DateTime? ReleaseDate { get; set; }
    public int MovieCount { get; set; }
    }

    }

    在Movie控制器中定义名为Query的Action: 

    public class MoviesController : Controller
    {
    private MovieDBContext db = new MovieDBContext();

    public ActionResult Query()
    {

    //这里等同于LINQ查询,但是我习惯于用SQL语句来查询数据了(asp.net流派过来的)
    List<MovieQuery> list = db.Database.SqlQuery<MovieQuery>("select ReleaseDate,count(1) as MovieCount from movies group by ReleaseDate").ToList();

    return View(list);

    }

    }

    在视图文件夹Movies下定义一个Query视图页:

    @model IEnumerable<MvcEntitiyFrameWork.ViewModels.MovieQuery>

     <!-- 此处使用的是ViewModels如果不加IEnumerable<>标签就会提示:不包含getenumerator的公共定义 的一个错误-->
    @{
    Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
    </head>
    <body>
    <div>
    <form>
    <table>
    <tr>
    <th>
    Release Date
    </th>
    <th>
    Movies count
    </th>
    </tr>
    @foreach(var item in Model)
    {
    <tr>
    <td>
    @Html.DisplayFor(modelItem => item.ReleaseDate)
    </td>
    <td>
    @item.MovieCount
    </td>
    </tr>
    }
    </table>
    </form>
    </div>
    </body>
    </html>

    最后运行项目,打开该视图页Query,可以看到数据成功绑定到视图页

  • 相关阅读:
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
    Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。
    redhat 关机注销命令详解
    VirtualBox的四种网络连接方式
    修改RedHat的系统显示时间
    insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
    xen坑随笔 heartbeat dpkg垃圾数据库清除
    tomcat 监控脚本
    负载均衡随笔
    GIT命令介绍
  • 原文地址:https://www.cnblogs.com/xp1056/p/5515188.html
Copyright © 2011-2022 走看看