• 【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的数据传递。控制器中存在多种传递数据给视图的方式,比如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

  • 相关阅读:
    Dockerfile
    最近遇到的jsfl开发问题总结
    【Distributed】大型网站高并发和高可用
    【Distributed】CDN
    【Distributed】限流技巧
    【Java并发】锁机制
    【Java并发】线程通信
    【Java并发】线程安全和内存模型
    【Java并发】基础
    【Redis】基本数据类型及命令操作(超详细)
  • 原文地址:https://www.cnblogs.com/mq0036/p/9083237.html
Copyright © 2020-2023  润新知