【问题标题】:Can not access a controller (ASP.NET MVC)无法访问控制器 (ASP.NET MVC)
【发布时间】:2014-03-22 02:29:14
【问题描述】:

这个控制器:

public class TestController <T> : Controller
{
    public string Index()
    {             
        return "123";
    }
}

路由的定义:

routes.MapRoute(
     "Default",
     "{controller}/{action}/{id}",
     new
     {
          controller = "Test<T>",
          action = "Index",
          id = "" 
     });

这是我得到的错误:

IControllerFactory 'Yad2.Web.Mvc.UI.Infrastructure.NinjectControllerFactory' 没有返回名称为 'Test' 的控制器。

【问题讨论】:

  • 你为什么使用通用控制器?我以前从未见过。
  • 通用控制器???展示你如何配置 Ninject。

标签: c# asp.net-mvc-4


【解决方案1】:
public class TestController <T>   : Controller
{
    public string Index( )
    {             
        return "123";
    }
}

这里的错误列表:

  1. 控制器不能是泛型抽象类,需要定义T
  2. 所有动作都需要返回ActionResult派生对象。
  3. 您的路由定义中的“测试”绝对不正确。永远不会工作。
  4. 您从未展示过您的 Ninject 注册信息。

【讨论】:

  • 同意除 2 之外的所有内容。您可以从 Action Result 方法中返回 stringbool
  • 有一种方法可以使用通用控制器。查看这篇文章:stackoverflow.com/questions/848904/…
  • @krillgar 不建议您这样做,如果您想这样做,请使用控制器中的 Content() 方法。
  • @NitinMidha 您发给我的链接中的控制器是定义了 T 的通用控制器。上面的代码中没有定义。本质上,这个用户想要神奇地从空气中提取出一个通用类型。除非您建立一种机制来动态设置 T 并创建它(可能使用路由值),否则您无法做到这一点。 MVC 不会解析 抽象 控制器。
猜你喜欢
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
相关资源
最近更新 更多