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,可以看到數據成功綁定到視圖頁

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM