我试图效仿一个例子。它表示要实现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));
}
}
}
答案 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
),这样您就可以从请求中获得模型绑定,查看引擎支持,操作等......