使用 IController 创建控制器?

Creating a controller with IController?

我正在尝试效仿一个例子。它说要实现 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));
        }


    }
}

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

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

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

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