[MVC]Controller
1,控制器中所有的動作方法必須聲明為public,如聲明為private或protected,將不被視為動作方法。
如果將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,那么將跳轉(zhuǎn)到百度首頁,因為我們重寫了HandleUnknownAction方法。
2,可以創(chuàng)建兩個同名的Action,取不同的動作方法選擇器,如[HttpGet]/[HttpPost],前者用于顯示HTML窗體,后者用來接收窗體輸出的值。
控制器負責(zé)處理瀏覽器的所有請求,并決定響應(yīng)什么屬性給瀏覽器(注意不是如何響應(yīng),是響應(yīng)什么,如何響應(yīng)是View的關(guān)注點),控制器還負責(zé)協(xié)調(diào)Model與View的數(shù)據(jù)傳遞。控制器中存在多種傳遞數(shù)據(jù)給視圖的方式,比如ViewData["key"]=value。ViewData是一個ViewDataDictionary對象,實現(xiàn)了接口IDictionary<string, object>,所以在設(shè)置ViewData屬性時,傳入的key必須為字符串類型。
比如說ViewData.Model,也就是之前常用的強類型視圖。
比如說ViewBag,ViewBag被聲明為dynamic動態(tài)類型,對ViewBag的任何訪問動作,最終還是對ViewData來進行操作,二者唯一的差別是ViewBag是動態(tài)類型。
代碼:ViewBag.key=value; 可以看出ViewBag是ViewData的語法糖。
TempData也是字典型別,與ViewData不同,TempData用session保存信息,TempData一般與RedirectResult配合使用,只要有取用TempData的值,值在當次網(wǎng)頁要求就被清除。
轉(zhuǎn)載于:https://www.cnblogs.com/SharpL/p/4594128.html
總結(jié)
以上是生活随笔為你收集整理的[MVC]Controller的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之二叉树的物理结构(存储结构)
- 下一篇: 操作系统之进程管理:5、处理机调度