我正在尝试将自定义ControllerFactory实现为:
public class TodoController : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
if (controllerName == "Tasks")
{
return new TasksController(new TaskContext());
}
return base.CreateController(requestContext,controllerName);
}
}
和
ControllerBuilder.Current.SetControllerFactory(new TodoController());
除了调用TasksController的路由外,我在所有路由上一直都异常。例外是:
找不到路径'/'的控制器或未实现IController。
我已经看到了其他实现this article中提到的自定义控制器的方法,该方法使用反射为所有 other 请求实例化控制器。
但是我很困惑,为什么我不能调用DefaultControllerFactory来实例化控制器?
答案 0 :(得分:0)
topViewController
可能没有TaskContext()
可用。
以下链接可能有助于说明。 Controller Creation via Activator..CreateInstance
这里是一个引号“ ... DefaultControllerFactory(这是默认工厂)的确确实在使用RequestContext引发了Http 404 Not Found异常(需要时),但其他Controller工厂(必须这样做)实现IControllerFactory)可以使用它。。”