如何检查控制器上下文是否是ASP.NET Core MVC中的子操作?

时间:2018-12-20 21:23:50

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

我正在使用.NET Core MVC来防止用户通过在浏览器中手动输入URL来导航到操作。

在以前的MVC版本中,以下代码片段可以解决问题:

public ActionResult Index()
{
    if(!ControllerContext.IsChildAction)
    {
        // redirect to different action
    }
    return View(viewModel);
}

Source (also similar question)

如何使用.NET Core MVC完成此操作?

2 个答案:

答案 0 :(得分:3)

Goodbye Child Actions, Hello View Components

  

子操作在ASP.NET Core MVC中不存在。相反,我们是   鼓励使用新的“视图组件”功能来支持此使用   情况。

答案 1 :(得分:3)

ASP.NET Core MVC中不存在子操作,如先前的答案所述。 视图组件功能就像子操作一样。在official documentation中指定为“功能强大”。

无法直接从浏览器访问视图组件。 据此,您无需控制请求是否来自url。

查看组件类的创建类型:

1)通过在类中添加ViewComponent后缀来创建:

public class SampleViewComponent
{
    ...
}

2)从ViewComponent派生创建

public class Sample : ViewComponent
{
    ...
}

3)使用ViewComponent属性创建

[ViewComponent]
public class Sample
{
    ...
}