使用 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));
}
}
}
下面是直接实现接口的示例控制器:
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
)派生,以便您拥有来自请求的模型绑定、视图引擎支持、操作等内容