【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,那么將跳轉到百度首頁,因為我們重寫了HandleUnknownAction方法。
2,可以創建兩個同名的Action,取不同的HTTP動作方法選擇器,如[HttpGet]/[HttpPost],前者用于顯示HTML窗體,后者用來接收窗體輸出的值。
控制器負責處理瀏覽器的所有請求,并決定響應什么屬性給瀏覽器(注意不是如何響應,是響應什么,如何響應是View的關注點),控制器還負責協調Model與View的數據傳遞??刂破髦写嬖诙喾N傳遞數據給視圖的方式,比如ViewData["key"]=value。ViewData是一個ViewDataDictionary對象,實現了接口IDictionary<string, object>,所以在設置ViewData屬性時,傳入的key必須為字符串類型。
比如說ViewData.Model,也就是之前常用的強類型視圖。
比如說ViewBag,ViewBag被聲明為dynamic動態類型,對ViewBag的任何訪問動作,最終還是對ViewData來進行操作,二者唯一的差別是ViewBag是動態類型。
代碼:ViewBag.key=value; 可以看出ViewBag是ViewData的語法糖。
TempData也是字典型別,與ViewData不同,TempData用session保存信息,TempData一般與RedirectResult配合使用,只要有取用TempData的值,值在當次網頁要求就被清除。
?
出處:https://www.cnblogs.com/SharpL/p/4594128.html
轉載于:https://www.cnblogs.com/mq0036/p/9083237.html
總結
以上是生活随笔為你收集整理的【MVC】Controller的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: switch-case和if-else可
- 下一篇: 一些日常工具集合(C++代码片段)