使用IController创建控制器?

时间:2015-01-10 10:27:03

标签: c# asp.net-mvc

我试图效仿一个例子。它表示要实现IController接口(来自System.Web.Mvc命名空间)。界面如下:

public interface IController {
void Execute(RequestContext requestContext);
}

该项目似乎使用此界面(控制器文件使用它)但我不知道它在哪里?如果我把它放在另一个控制器文件中它不起作用....请告知

这是使用界面的控制器

using System.Web.Mvc;
using System.Web.Routing;

namespace ControllersAndActions.Controllers
{
    public class BasicController : Controller
    {
        // GET: Basic
        public void Execute(RequestContext requestContext)
        {
            string controller = (string)requestContext.RouteData.Values["controller"];
            string action = (string)requestContext.RouteData.Values["action"];

            if (action.ToLower() == "redirect")
            {
                requestContext.HttpContext.Response.Redirect("/Derived/Index");
            }

            else
            {
                requestContext.HttpContext.Response.Write(
                    string.Format("Controller: {0}, Action: {1}",
                    controller, action));
            }

         //   requestContext.HttpContext.Response.Write(
         //       string.Format("Controller: {0}, Action: {1}", controller, action));
        }


    }
}

1 个答案:

答案 0 :(得分:2)

这是一个直接实现接口的示例控制器:

public class HomeController : IController
{
    public void Execute(RequestContext requestContext)
    {
        var response = requestContext.HttpContext.Response;
        response.ContentType = "text/plain";
        response.Write("Hello World");
    }
}

现在,当您导航到/Home时,将执行此控制器。

另一方面,ControllerBase类已经为您实现了此接口,并为您提供了更多实用程序。通常,您可以直接从Controller类派生(继承ControllerBase),这样您就可以从请求中获得模型绑定,查看引擎支持,操作等......