Very well! After learning about the data model, now it's
time to update our implementation of controller classes to apply the data model
methods and load data and pass the data to views.
If you can remember from the second part of this series, we
had three controller classes with three action methods included in them. Here
we updated them to use data model methods.
First controller to update is the HomeController
and its Index action method. The updated code is
presented in Listing 2.
Listing 2:
using System;
using System.Web;
using System.Web.Mvc;
using KBlog.Models;
using System.Collections.Generic;
namespace KBlog.Controllers
{
public class HomeController : Controller
{
// Sample URL: /Default.aspx
[ControllerAction]
public void Index()
{
KBlogDataContext dataContext = new KBlogDataContext();
List<Post> posts = dataContext.GetRecentPosts(10);
RenderView("Index", posts);
}
}
}
As you see I used the KBlogDataContext
class and its GetRecentPosts method to retrieve a
list of posts and pass them to RenderView method. RenderView is a method that gets state data and a view name
and passes the data to view. The rest will be done in views that we'll discover
in future article parts.
The second controller is CategoriesController
where we retrieve the data for all the posts in a specified category and the
updated code is shown in Listing 3.
Listing 3:
using System;
using System.Web;
using System.Web.Mvc;
using KBlog.Models;
using System.Collections.Generic;
namespace KBlog.Controllers
{
public class CategoriesController : Controller
{
// Sample URL: /Category/DotNet
[ControllerAction]
public void Category(string name)
{
KBlogDataContext dataContext = new KBlogDataContext();
List<Post> posts = dataContext.GetCategoryPosts(name);
RenderView("Category", posts);
}
}
}
The last controller is PostsController
that loads data for an individual post and passes it to the appropriate view
(Listing 4).
Listing 4:
using System;
using System.Web;
using System.Web.Mvc;
using KBlog.Models;
using System.Collections.Generic;
namespace KBlog.Controllers
{
public class PostsController : Controller
{
// Sample URL: /Post/25
[ControllerAction]
public void Post(int id)
{
KBlogDataContext dataContext = new KBlogDataContext();
Post post = dataContext.GetPost(id);
RenderView("Post", post);
}
}
}
The only thing that you may ask about is the RenderView method and stuff related to views. Hopefully we
will cover views in more details in next parts so don't worry about them!