在MVC的控制器中查询数据库中的数据,然后在用视图显示出来,这套流程是怎么走的哪,下面我自己先宏观的总结一下。
首先,在Controllers文件夹下创建HomeController控制器,然后在ActionResult Index()方法右击——>添加视图。然后在HomeController页面引用命名空间(Models)。
一、查询数据
查询数据的时候,我总结了四种方式,下面一个个介绍。
1、第一种查询方式是使用标准的运算符(SQO)查询
OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象 IQueryable<Models.BlogArticle> query= db.BlogArticles.Where(d => d.AIsDel==false);
2、使用DBQuery延迟加载数据查询
OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象 DbQuery<MvcApplication1.Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<MvcApplication1.Models.BlogArticle>;
延迟加载这特别的好玩,大家可以到网上查询一下相关的资料。
3、使用List直接查询数据库,防止延迟加载数据
List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();
4、使用Linq语句查询
List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();
使用linq语句查询的时候,它的逻辑是:首先说明在哪个实体中查询数据(from d in db.BlogArtiticles)然后是将要查询的条件(where d.AIsDel == false),最后在实体中查询出来(select d)。使用Linq语句,.NET 编译器在编译程序集的时候,也就是将程序集编译成中间代码的时候,将Linq语句转为SQO(标准查询运算符)来执行,只不过Linq语句让程序员敲起来比较“爽”而已。
二、将数据传送给相应的视图
1、使用ViewBag传送数据
ViewBag.DataList = list; //使用ViewBag传输数据ViewBag是动态类型的,他的好处是我们可以随便给他添加属性
2、使用ViewData传送数据
ViewData["DataList"] = list;//使用ViewData["DataList"]传输数据 return View();//加载视图
传送给视图的是一个List,是一堆数据,视图需要将这一堆数据获取到,然将将其组织起来,这样才能形成美观的页面。下面在Index.cshtml中将list中的数据遍历出来,然后显示在页面上。
<table id ="tbList"> <tr> <th>ID</th> <th>标题</th> <th>分类</th> <th>状态</th> <th>时间</th> <th>操作</th> </tr> <!--遍历Action方法 设置给ViewData的集合数据,生成HTML代码--> @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>) { <tr> <td>@a.AId</td> <td>@a.ATitle</td> <td>@a.BlogArticleCate.Name</td> <td>@a.Enumeration.e_cname</td> <td>@a.AUpdatetime</td> <td> <a href="javascript:del(@a.AId)">删</a> <a href="javascript:(@a.AId)">改</a> </td> </tr> } </table></span>给这个table添加个样式,让其美观一些
<style type="text/css"> #tbList { border:1px solid #0094ff; width:800px; margin:10px auto; /*上下10px;左右水平居中*/ border-collapse:collapse;/*设置为收缩边框*/ } #tbList th, td { border:1px solid #0094ff; padding:10px;/*将内容与单元格填充开*/ }
四、总结
终于写完了,这些东东包含着很多的知识点,我们只有经常使用,经常练习,这样才能将效率提升上去。在这里我感受到EF做的的确挺强大,可以联查,再配合Razor语法的使用,方便了编程人员的使用。.NET 还有很多要学习的地方,继续奋斗吧!