首先我們已經有了一個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,可以看到數據成功綁定到視圖頁