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

Bac*_*ata 3 c# asp.net asp.net-mvc

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

NonAction和ChildActionOnly

这两个属性对我来说似乎都是一样的.阻止管道(动作调用者)调用动作方法.请看一下这个片段:

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

[ChildActionOnly]
private ActionResult StackOverflow2()
{
    // Omitted for brevity.
    return View();
}
Run Code Online (Sandbox Code Playgroud)

当然这两种方法都不会被调用,因为它们是私有的 - 至少在默认的实现中 - 但我想知道差异只是出于好奇......

Bra*_*tie 5

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

NonAction - 类似于标记一种方法"私有",以防止它无法从外部调用或子操作中访问.适合保护您不需要/想要作为直接视图创建的操作.值得一提的是,这只是公共方法所必需的(因为私人/受保护不被认为是"可行的").

也可以看看: