【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对象

相关文章
相关标签/搜索