本示例程序演示如何采用 Microsoft ASP.NET MVC Preview 5 和 LINQ TO SQL 开发 Web Application。
1. ASP.NET MVC
简介
ASP.NET MVC框架是既ASP.NET WebForms后的又一种开发方式。它提供了一系列优秀特性,使ASP.NET开发人员拥有了另一个选择。MVC是个将一个应用的实现分成三个组件角色的框架技术:模型,视图和控制器。
在基于MVC的应用里,Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中。
在基于MVC的应用里,View(视图)是负责显示用户界面的组件。这个UI通常是使用模型Model数据来创建的。
在基于MVC的应用里,Controller(控制器)是处理用户交互,操作模型Model和最终选择用哪个视图View来显示UI的组件。在MVC应用中,视图只是用来显示信息而已,是控制器来处理和回应用户的输入和交互的。
使用MVC方法的一个好处是,它有助于促进应用中模型,视图,控制器间的关注的清晰分离。保持关注的清晰分离使得对应用的测试极其容易,因为不同应用组件间的契约的定义和表达是更明确的。
2. MVC
和 LINQ TO SQL
演示程序
下面是EntLib.com 论坛小组(
http://forum.EntLib.com )针对 Microsoft ASP.NET MVC 框架最新版(Preview 5) 设计的一个简单示例程序。示例程序基于EntLib.com Forum 数据库演示,可以非常方便切换到其他数据库。
如下是示例程序的运行效果界面:
3.
构建基于LINQ TO SQL
的Model
下面是示例项目源程序:
其中Model部分,采用LINQ TO SQL 创建,示例程序采用EntLib.com Forum 数据库,添加了四个表,操作界面如下:
4.
创建EntLibForumController
控制器
EntLibForumController 类首先增加一个先前创建的Model – EntLibForumDataContext,然后编写检索论坛、主题和帖子内容的方法。具体代码如下 – 采用LINQ TO Object 技术:
public class EntLibForumController : Controller
{
private EntLibForumDataContext m_Forum = new EntLibForumDataContext();
public ActionResult Index()
{
// Add action logic here
throw new NotImplementedException();
}
public ActionResult Forums()
{
ViewData["Forums"] = DataContext.yaf_Forums.ToList();
return View();
}
public ActionResult Topics(int id)
{
ViewData["Topics"] = DataContext.yaf_Topics.Where(a => a.ForumID == id).ToList();
return View();
}
public ActionResult Messages(int id)
{
ViewData["Messages"] = DataContext.yaf_Messages.Where(a => a.TopicID == id).ToList();
return View();
}
#region Properties
private EntLibForumDataContext DataContext
{
get { return m_Forum; }
}
#endregion
}
5.
创建UI
视图
创建UI View 比较简单,在创建UI View时,选择MVC View Content Page,Master Page 选择Shared 目录下的Site.Master 文件。
下面是Forums.aspx 页面的UI 及其代码:
public partial class Forums : ViewPage
{
protected void Page_Load(object sender, EventArgs e)
{
grdForum.DataSource = (List<yaf_Forum>)ViewData["Forums"];
grdForum.DataBind();
}
}
下载示例项目源代码!
欢迎访问
http://forum.entlib.com 开源ASP.NET论坛,获取更多的.Net 技术资料和系统架构设计文档,更有很多技术专家的知识共享。