技术开发 频道

基于MVC框架开发Web论坛之新功能篇

  四、 修改Forum控制器

  Forum控制器,类似于ForumRepository,还提供了两个新的方法。Forum控制器的修改版本包含于列表3中。
列表3–Controllers\ForumController.cs
 

using System;
using System.Web.Mvc;
using MvcForums.Models;
using Microsoft.Web.Mvc;

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");
        }

        
public ActionResult Create(FormCollection form)
        {
            
//创建新的消息
            var messageToCreate
= new Message();
            
if (!String.IsNullOrEmpty(form["parentThreadId"]))
                messageToCreate.ParentThreadId
= int.Parse(form["parentThreadId"]);
            
if (!String.IsNullOrEmpty(form["parentMessageId"]))
                messageToCreate.ParentMessageId
=  int.Parse(form["parentMessageId"]);
            messageToCreate.Author
= form["author"];
            messageToCreate.Subject
= form["subject"];
            messageToCreate.Body
= form["body"];
            messageToCreate.EntryDate
= DateTime.Now;

            
//添加到数据库
            _repository.AddMessage(messageToCreate);

            
//重定向
            return RedirectToAction(
"Index");
        }

        
public ActionResult Thread(int threadId)
        {
            ViewData.Model
= _repository.SelectMessages(threadId);
            return View(
"Thread");
        }

    }
}

   该Create()动作负责在数据库中创建一个新的消息。这个动作使用了一个传递到此动作的form参数并且生成Message类的一个实例。然后,借助于该ForumRepository.AddMessage()方法,该消息类被添加到数据库中。

  此外,Thread()动作返回一个相应于一个特定线程的消息的集合。这个动作把它的所有工作代理到ForumRepository.SelectMessages()方法。
 

0
相关文章