初識MVC-controller隨筆
1 public class HomeController : Controller 2 { 3 /// <summary> 4 /// 要求網址 http://localhost/Home/Index 5 /// </summary> 6 [ActionName("Default")] 7 public ActionResult Index() 8 { 9 return View(); 10 } 11 12 }
唯一需要特別注意的是,如果你使用默認的"return View()"方法返回ActionResult類,由於應用了[ActionName("Default")]屬性,所以MVC會去尋找"/Views/Home/Default.aspx"頁面而不是"/Views/Home/Index.aspx"頁面來執行。
6 動作方法選取器
6.1 NonAction屬性
若將NonAction屬性應用在Controller中的Action方法上,即便該Action方法是公開方法,也會告知ActionInvoke不要選取這個Action來執行。這個屬性主要用來保護Controller中的特定公開方法不會被發布到Web上。或是當功能尚未開發完成就要進行部署時,若暫時不想將此方法刪除,也可應用這個屬性,表示"不要對外公開"。
[NonAction] public ActionResult Index() { return View(); }
將Action方法中的"public"修改成"privare",也可以達到同樣的目的
6.2 HttpGet屬性、HttpPost屬性、HttpDelete屬性和HttpPut屬性
HttpGet、HttpPost、HttpDelete和HttpPut屬性是動作方法選取器的一部分,我們以下列程序為例進行介紹。若應用了[httpPost]屬性,表示只有當客戶端浏覽器發送HTTP POST請求時才可以選取這個Action。
[HttpPost] 2 private ActionResult Index() 3 { 4 return View(); 5 }
相反的,若果沒有應用這些屬性,客戶端浏覽器發送任何HTTP動詞,都會自動選取對應的Action。
這些屬性常用在需要接受窗口數據的時候。你可以創建兩個同名的Action,一個應用[HttpGet]屬性來顯示窗口HTML,另一個應用[HttpPost]屬性來接收窗口送出的值,
7 ActionResult類
ActionResult類是Action執行的結果,但ActionResult中並不包含執行結果,而是包含執行響應時所需的信息。當Action返回ActionResult類之後,會由MVC執行。先看看ActionResult抽象類的程序代碼。在ActionResult抽象類中僅定義了一個ExecuteResult()方法來執行結果
MVC定義的ActionResult如表所示:
表中的Controller輔助方法在Controller類中為返回ActionResult類提供支持,如下程序可用於跳轉到另一個頁面。
1 [HttpPost] 2 public ActionResult Post(FormCollection c) 3 { 4 return new RedirectResult("/"); 5 }
到此本文結束,如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。