asp.net mvc ChildActionOnly 和ActionName的用法


ChildActionOnly的目的主要就是讓這個Action不通過直接在地址欄輸入地址來訪問,而是需要通過RenderAction來調用它。

<a href="javascript:;" onclick="javascript:document.getElementById('show').style.display=''">

調用子操作</a>

<div id="show" >

<% Html.RenderAction("Test", "ChildTest"); %></div>

public ActionResult Index()

{

return View();

}

[ChildActionOnly]

public ActionResult Test()

{

return Content("Hello");

}

 

http://localhost:666/ChildTest/Test

如果直接這樣訪問Action的話就會報如下錯誤:

操作“Test”只能由子請求訪問。

說明執行當前 Web 請求期間,出現未經處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。 
異常詳細信息System.InvalidOperationException: 操作“Test”只能由子請求訪問。

從某種意義上來說也可以增強一定的安全性。

 

 

 

 

ActionName的意思就是為Action定義一個新的名稱

[ActionName("NewTest")]

public ActionResult Test()

{

return Content("Hello");

}

如果是這樣修改后,那么調用的時候就不是Test了,而是NewTest

<% Html.RenderAction("NewTest", "ChildTest"); %>

 

同名的時候不能重載(可以有一個Get,一個Post),

如:下面兩個是可以允許的

public ActionResult ReadBook()

{

 

}

   [HttpPost]
        public ActionResult ReadBook(int id,int pageNum)
        {
        }

如果還要定義一樣的話,可以通過自定義Action的名字的時候可以的

 [ActionName("Index2")]

 public ActionResult ReadBook(int n,int a,int b)
        {
   }

轉載:http://www.cnblogs.com/monian/p/4118465.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM