21.6 LINQ与MVC
在ASP.NET MVC应用程序中,Models层通常用于抽象数据库中的表使之成为开发人员能够方便操作的对象,在Models层中,开发人员能够使用LINQ进行数据库的抽象并通过LINQ筛选和查询数据库中的数据用于页面呈现。
21.6.1 创建ASP.NET MVC应用程序
在前面的章节中讲到了ASP.NET MVC开发模型,在ASP.NET MVC应用程序中,开发人员能够很好的将页面进行分离,这样不同的开发人员就能够只关注自身的开发而无需进行页面整合。在ASP.NET MVC应用程序中,包括三个基本的模块,这三个模块分别是Models、Controllers和Views。
Controllers用于实现与Models的交互和Views的交互,在Controllers与Models交互时,Controllers主要是用于从Models中进行数据的获取,而Models主要关注与数据库进行交互,在Controllers与Views交互时,Controllers中的方法同Views中的页面一起用于页面呈现。在进行ASP.NET MVC应用程序的开发时,在应用程序中读取数据库则需要在Models中创建LINQ文件与数据进行交互,在创建LINQ文件时,首先需要创建ASP.NET MVC应用程序,如图21-27所示。
图21-27 创建ASP.NET MVC应用程序
单击【确定】按钮创建ASP.NET MVC应用程序,系统会默认创建若干文件和文件夹,删除Views和Controllers文件夹下的文件,自行创建页面进行ASP.NET MVC应用程序的开发。首先创建Views文件,在创建Views文件时首先需要创建一个文件夹,这里创建一个Blog文件夹,创建后在该文件夹内创建Views文件Index.aspx,如图21-28所示。
图21-28 创建Views文件
这里创建一个Index.aspx的Views文件用于页面呈现,Index.aspx页面代码如下所示。
<head runat="server">
<title><%=ViewData["title"]%></title>
</head>
<body>
<div>
数据库中的数据为:<br>
<%=ViewData["contents"]%>
</div>
</body>
</html>
上述代码在Index.aspx中使用了两个ViewData,这两个ViewData分别用于呈现标题和数据内容。在Views文件中,需要通过Controllers文件进行ViewData变量的获取,这里还需要创建一个Controllers文件。创建该文件时,应该与相应Views页面的文件夹同名,并在名称后加入Controllers.cs,如图21-29所示。
图21-29 创建Controllers文件
由于创建的文件夹是Blog,所以Controllers文件的名称应该为BlogControllers.cs,创建完成后,为了让用户能够访问Index.aspx,还需要实现Index方法,示例代码如下所示。
{
public class BlogController : Controller//继承自Controller
{
public ActionResult Index()//实现方法
{
ViewData["title"] = "MVC 和 LINQ";// ViewData["title"]
ViewData["contents"] = "数据内容";//ViewData["contents"]
return View();//返回视图
}
}
}
上述代码分别为ASP.NET MVC应用程序添加了两个ViewData,这两个ViewData分别用于呈现标题和数据内容,在Views相应的文件中能够使用这两个ViewData进行数据呈现。
21.6.2 创建LINQ to SQL
在创建了ASP.NET MVC应用程序后并创建了相应的Views和Controllers文件用于页面呈现和数据获取,在Controllers中ViewData[“content”]是获取数据库中的数据,这里可以在Models中创建LINQ to SQL类进行数据辅助操作,如图21-30所示。
图21-30 创建LINQ to SQL类
创建完成后就能够在服务器资源管理器中拖动相应的表进行LINQ to SQL类的创建,如图21-31和图21-32所示。
图21-31 服务器资源管理器
图21-32 LINQ to SQL类文件
添加完成并配置LINQ to SQL类后,还需要在Models中创建相应的类文件,示例代码如下所示。
{
public class GetData
{
public string build()//实现方法
{
string build=””;//返回字符串
DataClasses1DataContext dcd = new DataClasses1DataContext(); //使用LINQ类
var d = from dc in dcd.mynews select dc;//执行查询
foreach (var myd in d)//遍历集合
{
build += myd.TITLE.ToString()+"<br/>";//输出字符串
}
return build;
}
}
}
上述类文件在Models中进行数据查询并返回相应的数据,在Controllers中,开发人员可以使用该类进行数据查询和操作。
注意:在Controllers中需要使用Models命名空间,这也就能够直接在Controllers中进行LINQ数据查询和操作,但是为了层次分明和简便,推荐在Models中进行相应的数据操作类文件编写。
21.6.3 数据查询
在创建了相应的数据操作类后,就能够在Controllers中查询数据并将数据呈现在页面中,Controllers中Index方法需要从数据库中进行数据读取,示例代码如下所示。
using _27_1.Models;//使用Model命名空间
{
public class BlogController : Controller//继承自Controller
{
public ActionResult Index()//实现方法
{
ViewData["title"] = "MVC 和 LINQ";//定义ViewData
GetData da=new GetData();//创建对象
ViewData["contents"] =da.build();//赋值给ViewData
return View();//返回默认视图
}
}
}
上述代码则使用了Models中的类进行数据呈现,在创建对象后,可以使用对象中的build方法进行数据获取。在运行前,还需要修改URL Routing的默认值进行默认页面的呈现,示例代码如下所示。
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",//编写路由规则
new { controller = "Blog", action = "Index", id = "" }//编写默认值
);
}
上述代码编写了路由规则和默认值,当用户访问网站时,如果Controllers和方法都没有指定,则会访问Blog/Index方法。修改路由规则和默认值后,就能够运行ASP.NET MVC应用程序,运行后如图21-33所示。
图21-33 运行MVC应用程序
加支付宝好友偷能量挖...