ASP.NET - ChildActionOnly和NonAction属性有什么区别?

3

仅出于好奇,这两个属性有什么区别?

NonAction和ChildActionOnly

在我看来,这两个属性似乎都起着相同的作用。防止管道(操作调用程序)调用操作方法。请看以下代码片段:

[NonAction]
private ActionResult StackOverflow1()
{
    // Omitted for brevity.
    return View();
}

[ChildActionOnly]
private ActionResult StackOverflow2()
{
    // Omitted for brevity.
    return View();
}

当然,由于这两种方法是私有的 - 至少在默认实现中 - 所以两者都不会被调用,但出于好奇我想知道它们之间的区别...
1个回答

5

ChildActionOnly -- 只能由另一个操作调用,而不能直接从外部调用(通过路由)。允许的操作包括Action/RenderAction扩展方法。

NonAction -- 与将方法标记为“private”相似,以防止其被外部调用或作为子操作调用。对于保护您不需要或不想创建为直接视图的操作很有用。值得一提的是,这仅在公共方法上是必要的(因为私有/受保护的方法不被认为是“可操作”的)。

另请参见:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接