使用 IController 创建控制器

本文关键字:控制器 创建 IController 使用 | 更新日期: 2023-09-27 18:36:57

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

    }
}

使用 IController 创建控制器

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

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)派生,以便您拥有来自请求的模型绑定、视图引擎支持、操作等内容

......