asp.net mvc 3.0详细笔记__13__了解Linq,#region,#endregion

来源:互联网 发布:bgp网络是什么 编辑:程序博客网 时间:2024/05/01 23:55

        欢迎一起来学习MVC 3.0,我们在一步一个脚印的做一个MVC 3.0的项目,期间会有很多值得探索的地方。将会学到Razor,Lampda,Entity Framework,Linq C#新特性等等知识,一起加油吧!

本次重点突破:

                     了解Linq,#region,#endregion

工具资源下载:http://download.csdn.net/detail/dhcsimida/6779357(下载过就不用重复下载了

(1)回顾上一讲,我们已经能够通过点击首页右上角的"Store"来获得所有唱片的种类,但我们不能止步于此,还要有更多的需求,例如,我想知道某个种类下的唱片都有那些?这就是本主题要解决的。有与超链接要访问的是StoreController的Browse,那么我们就要在控制器Store中新建这个Action.如代码1.1

代码1.1

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MyMusicStore.Models;namespace MyMusicStore.Controllers{    public class StoreController : Controller    {        private MusicStoreEntity db = new MusicStoreEntity();        public ActionResult Index()        {            var album = db.Genre.ToList();            return View(album);        }        public ActionResult Show()        {            return View();        }        #region 获取属于相应种类的所有唱片        /// <summary>        /// 获取属于相应种类的所有唱片        /// </summary>        /// <param name="genre"></param>        /// <returns></returns>        public ActionResult Browse(string genre) {            var example = db.Album.Where(g => g.Genre.Name.Equals( genre)).ToList();//            ViewBag.genre = genre;//记录唱片种类,用于在页面显示            ViewBag.count = example.Count;//记录本种类的唱片个数,用于在页面显示            return View(example);        }        #endregion 获取属于相应种类的所有唱片    }}

(2)为其添加视图Browse.cshtml,如图2.1

图2.1


(3)编辑Browse.cshtml页面,如代码3.1

代码3.1

@model IEnumerable<MyMusicStore.Models.Album>@{     ViewBag.Title = "Browse"; }<h2>    有 @ViewBag.count 个 @ViewBag.genre 唱片,如下所示:</h2><ul>@foreach (var album in Model)    { <li>            @album.Title</li>    }</ul>
(4)执行,再次点击右上角的"Store",迁移到显示种类列表页面,如图4.1
图4.1


(5)点击任意一种种类,如"Jazz",页面随即显示,其所有唱片,如图5.1

图5.1


(6)观察Browse代码和以往有所不同,整个Action包含#region#endregion在其中,#region和#endregion叫预处理器指令,帮助您在使用 VS的大纲显示功能时指定可展开或折叠的代码块,这里的Browse就可以通过#region和#endregion来实现展开或折叠,使得代码清晰明了

(7)分析以下代码:  varexample = db.Album.Where(g=>g.Genre.Name.Equals(genre)).ToList();

     1,var      :不要和javascript中的var相提并论,C#编译器会推断等号右侧结果的类型,然后再此类型推定变                  量example的类型,所以,实际上变量的类型就是 Album 类型。

     2,example  : 接收变量。

     3,db       :数据库上下文的实例。

     4,Album    :Album类

     5,Where    :Linq查询方法。

     6,g        :Album类

     7,=>       :是Lampda表达式中的用法,指向的意思,就是把=>左边的变量带到=>右边的表达式或者代码 段                                   里。,英文名"goes to"。

     8,Genre    :Album类的引用属性。

     9,Name     :Genre的属性。

     10,Equals():C#的比较方法。

     11,genre   :页面传过来的参数。

     12,ToList():强制立即执行该查询并缓存其结果。

(8)想了解更多的关于Linq的知识请参考系列讲义Linq学习__01__初来乍到

(9)继续完成剩余的功能,点击每个唱片后,想看看当前唱片的具体信息,那么也要为唱片设置超链接。在

StoreController中添加Details方法,用来获取具体信息。更新StoreController代码后,如代码9.1

代码9.1

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using MyMusicStore.Models;namespace MyMusicStore.Controllers{    public class StoreController : Controller    {        private MusicStoreEntity db = new MusicStoreEntity();        public ActionResult Index()        {            var album = db.Genre.ToList();            return View(album);        }        public ActionResult Show()        {            return View();        }        #region 获取属于相应种类的所有唱片        /// <summary>        /// 获取属于相应种类的所有唱片        /// </summary>        /// <param name="genre"></param>        /// <returns></returns>        public ActionResult Browse(string genre) {            var example = db.Album.Where(g => g.Genre.Name.Equals( genre)).ToList();//            ViewBag.genre = genre;//记录唱片种类,用于在页面显示            ViewBag.count = example.Count;//记录本种类的唱片个数,用于在页面显示            return View(example);        }        #endregion 获取属于相应种类的所有唱片        /// <summary>        /// 查看唱片具体信息        /// </summary>        /// <param name="id">唱片Id</param>        /// <returns></returns>        public ActionResult Details(int id)        {            var album = db.Album.Where(g=>g.AlbumId.Equals(id)).ToList();            return View(album);        }    }}
(10)添加视图Details.cshtml,如图10.1

图10.1


(11)修改代码,如代码11.11

代码11.11

@model IEnumerable<MyMusicStore.Models.Album>@{     ViewBag.Title = "Details"; }<ul>@foreach (var album in Model)    { <li>            @album.Title</li>    }</ul>

(12)执行,再次点击首页右上角"Store",页面迁移到种类列表,随意点击一个超链接,如"Jazz",页面迁移到唱片列表,随意点击一个唱片,例如"The Best Of Billy Cobham",最终页面如图12.1

图12.1






0 0
原创粉丝点击