在MVC的控制器中查询数据库中的数据,然后在用视图显示出来,这套流程是怎么走的哪,下面我自己先宏观的总结一下。
首先,在Controllers文件夹下创建HomeController控制器,然后在ActionResult Index()方法右击——>添加视图。然后在HomeController页面引用命名空间(Models)。
一、查询数据
查询数据的时候,我总结了四种方式,下面一个个介绍。
1、第一种查询方式是使用标准的运算符(SQO)查询
OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
IQueryable query= db.BlogArticles.Where(d => d.AIsDel==false);
2、使用DBQuery延迟加载数据查询
OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
DbQuery query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery;
3、使用List直接查询数据库,防止延迟加载数据
List list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();
4、使用Linq语句查询
List 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添加个样式,让其美观一些
@using (Html.BeginForm("Modify","Home",FormMethod.Post))
{
修改 @Html.HiddenFor(a=>a.AId)
标题:
@Html.TextBoxFor(a=>a.ATitle)
分类:
@Html.DropDownListFor(a=>a.ACate, ViewBag.CateList as IEnumerable)
内容:
@Html.TextAreaFor(a=>a.AContent,10,60,null)
@Html.ActionLink("返回","Index","Home")
}