簡體   English   中英

ASP.NET - ChildActionOnly 和 NonAction 屬性之間有什么區別?

[英]ASP.NET - What's the difference between ChildActionOnly and NonAction attributes?

只是出於好奇,這兩個屬性之間有什么區別?

NonAction 和 ChildActionOnly

這兩個屬性對我來說似乎都一樣。 阻止管道(動作調用者)調用動作方法。 請看一下這個片段:

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

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

當然,這兩種方法都不會被調用,因為它們是私有的 - 至少在默認實現中 - 但我想知道只是出於好奇的區別......

ChildActionOnly - 只能由另一個動作調用,而不能直接從外部調用(通過路由)調用。 允許的操作包括Action / RenderAction擴展方法。

NonAction - 類似於標記一種方法“私有”,以防止它無法從外部調用或子操作中訪問。 適合保護您不需要/想要作為直接視圖創建的操作。 值得一提的是,這只是公共方法所必需的(因為私人/受保護不被認為是“可行的”)。

也可以看看:

操作方法是控制器中的公共方法,可以使用URL調用。 因此,默認情況下,如果控制器中有任何公共方法,則可以使用URL請求調用它。 要限制對控制器中公共方法的訪問,可以使用NonAction屬性。

子操作方法與NonAction方法不同,因為無法使用Action()RenderAction()幫助程序調用NonAction方法。

子操作方法不會響應URL請求。 如果嘗試,將拋出運行時錯誤 - 只有子請求才能訪問子操作。

可以通過使用Action()RenderAction() Html幫助程序從視圖發出子請求來調用子操作方法。

操作方法不需要將[ChildActionOnly]屬性用作子操作,但使用此屬性可以防止是否要阻止因用戶請求而調用操作方法。

兒童行為通常與部分觀點相關聯,但這不是強制性的。

使用子操作方法,可以緩存視圖的某些部分。 這是子動作方法的主要優點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM