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