【问题标题】:POCO Controllers in MVC 6MVC 6 中的 POCO 控制器
【发布时间】:2014-09-17 14:31:19
【问题描述】:

ASP.NET vNext Overview 表示您可以通过注入 IActionResultHelper 来创建 POCO 控制器:

public class HomeController
{
    // Helpers can be dependency injected into the controller
    public HomeController(IActionResultHelper resultHelper)
    {
        Result = resultHelper;
    }

    private IActionResultHelper Result { get; set; }

    public ActionResult Index()
    {
        return Result.Json(new { message = "Poco controllers!" });
    }
}

我正在尝试实现这个,但是我找不到这个接口。 the source code 中似乎是 no longer

目前创建 POCO 控制器的正确方法是什么?

【问题讨论】:

  • 这个来自asp.net论坛的回答澄清了情况forums.asp.net/t/…
  • @WiktorZychla - 是的,这并没有说明太多......只是 IActionResultHelper 消失了,您可以像往常一样创建结果。
  • @ErikFunkenbusch:这说明了一切。源代码注释说The property ActionContext gets injected by InitializeController from DefaultControllerFactory.。该示例随后显示ActionContext 使您可以访问HttpContext 和其他通常通过继承获得的基础设施。

标签: c# asp.net asp.net-mvc poco asp.net-core-mvc


【解决方案1】:

是的,这段代码大约在一个月前被删除,看起来他们正在使用不同的基于属性的方法来创建 POCO 控制器。没有 IActionResultHelper,你只需创建新的 ActionResult 实例...

如果您仔细研究这些问题,就会对正在发生的事情有所了解。

https://github.com/aspnet/Mvc/issues/316 https://github.com/aspnet/Mvc/issues/597 https://github.com/aspnet/Mvc/issues/617

似乎在 POCO 控制器中使用了一个新的 [Activate] 属性。请参阅此示例。

https://github.com/aspnet/Mvc/blob/dev/samples/MvcSample.Web/Home2Controller.cs

还有这个示例

https://github.com/aspnet/Mvc/blob/dev/samples/MvcSample.Web/SimplePocoController.cs

显然,新的 DefaultControllerFactory 要求 POCO 在控制器的命名中仍然使用 Controller 后缀,但是如果控制器派生自 Controller 类,您可以将其命名为任何名称。

【讨论】:

    【解决方案2】:

    截至2014-10-06 Visual Studio 14的CTP版本,注入服务的方式为:

    public class HomeController
    {
        // Use the ActivateAttribute to inject services into your controller
        [Activate]
        public ViewDataDictionary ViewData { get; set; }
    
        public ActionResult Index()
        {
            return new ViewResult() { ViewData = ViewData };
        }
    }
    

    来源:Getting Started with ASP.NET MVC 6 - Mike Wasson, asp.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多