五、 创建论坛控制器
接下来,我们需要创建论坛控制器—ForumController。此控制器将会负责针对用户请求生成响应。其实现代码列举于列表5中。
列表5–Controllers\ForumController.cs
using System;
using System.Web.Mvc;
using MvcForums.Models;
namespace MvcForums.Controllers
{
public class ForumController : Controller
{
private IForumRepository _repository;
public ForumController()
: this(new ForumRepository())
{ }
public ForumController(IForumRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
ViewData.Model = _repository.SelectThreads();
return View("Index");
}
}
}
using System.Web.Mvc;
using MvcForums.Models;
namespace MvcForums.Controllers
{
public class ForumController : Controller
{
private IForumRepository _repository;
public ForumController()
: this(new ForumRepository())
{ }
public ForumController(IForumRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
ViewData.Model = _repository.SelectThreads();
return View("Index");
}
}
}
另外还应注意到,该论坛控制器还利用了构造器依赖性注入技术。当ASP.NET MVC框架在一个运行时刻应用程序中实例化ForumController类时将使用无参的构造器。这个构造器能够创建访问实际数据库的ForumRepository类的一个实例。另一方面,在单元测试内部,则使用构造器接收一个ForumRepository类型参考的构造器。在单元测试中,我们将把一个带有一个虚构的DataContext的repository传递到论坛控制器。