1,控制器中全部的動做方法必須聲明爲public,如聲明爲private或protected,將不被視爲動做方法。html
若是將Action聲明爲private,或者是添加[NonAction]屬性,則不對外公開,沒法訪問。瀏覽器
1 private ActionResult Index() 2 { 3 return View(db.Guestbooks.ToList()); 4 } 5 6 protected override void HandleUnknownAction(string actionName) 7 { 8 Response.Redirect("http://www.baidu.com"); 9 }
代碼中Index爲私有方法,沒法訪問,若是在瀏覽器中輸入http://localhost:5502/guestbook/Index,那麼將跳轉到百度首頁,由於咱們重寫了HandleUnknownAction方法。session
2,能夠建立兩個同名的Action,取不一樣的HTTP動做方法選擇器,如[HttpGet]/[HttpPost],前者用於顯示HTML窗體,後者用來接收窗體輸出的值。ide
控制器負責處理瀏覽器的全部請求,並決定響應什麼屬性給瀏覽器(注意不是如何響應,是響應什麼,如何響應是View的關注點),控制器還負責協調Model與View的數據傳遞。控制器中存在多種傳遞數據給視圖的方式,好比ViewData["key"]=value。ViewData是一個ViewDataDictionary對象,實現了接口IDictionary<string, object>,因此在設置ViewData屬性時,傳入的key必須爲字符串類型。post
好比說ViewData.Model,也就是以前經常使用的強類型視圖。this
好比說ViewBag,ViewBag被聲明爲dynamic動態類型,對ViewBag的任何訪問動做,最終仍是對ViewData來進行操做,兩者惟一的差異是ViewBag是動態類型。spa
代碼:ViewBag.key=value; 能夠看出ViewBag是ViewData的語法糖。code
TempData也是字典型別,與ViewData不一樣,TempData用session保存信息,TempData通常與RedirectResult配合使用,只要有取用TempData的值,值在當次網頁要求就被清除。htm