使用 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
)派生,这样您就可以从请求、视图引擎支持、操作等获得模型绑定,...
我正在尝试效仿一个例子。它说要实现 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
)派生,这样您就可以从请求、视图引擎支持、操作等获得模型绑定,...