【MVC】Controller的使用

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

 

出處:https://www.cnblogs.com/SharpL/p/4594128.html對象

相關文章
相關標籤/搜索