出于好奇,这两个属性之间有什么区别?
仅限非动作和儿童动作
这两个属性对我来说似乎都一样。防止管道(动作调用程序)调用动作方法。请查看以下代码段:
[NonAction]
private ActionResult StackOverflow1()
{
// Omitted for brevity.
return View();
}
[ChildActionOnly]
private ActionResult StackOverflow2()
{
// Omitted for brevity.
return View();
}
当然,由于这两种方法是私有的(至少在默认实现中是这样),因此不会调用这两种方法,但是出于好奇,我想知道两者之间的区别...
最佳答案
ChildActionOnly-只能由其他操作调用,不能直接从外部调用(通过路由)调用。允许的动作包括Action / RenderAction扩展方法。
非动作-就像将方法标记为“私有”一样,以防止通过外部调用或子动作来访问它。适用于保护不需要/不想创建为直接视图的动作。值得一提的是,仅在公共方法上才需要这样做(因为私有/受保护的对象不被视为“可操作的”)。
也可以看看:
Using ChildActionOnly in MVC
ASP .NET MVC NonAction meaning