MVC 6中的POCO控制器

时间:2014-07-25 16:57:53

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

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!" });
    }
}

我试图实现这一点,但是,我找不到这个界面。它似乎是no longer中的the source code

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

2 个答案:

答案 0 :(得分: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类,则可以命名控制器。

答案 1 :(得分:1)

截至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