zoukankan      html  css  js  c++  java
  • [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,取不同的动作方法选择器,如[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的值,值在当次网页要求就被清除。

  • 相关阅读:
    【sql:练习题3】查询在 SC 表存在成绩的学生信息
    【sql:练习题2】查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
    学习设计模式之动态代理
    学习设计模式之静态代理
    学习设计模式之装饰器模式
    学习设计模式之策略模式
    学习设计模式之简单工厂
    Ehcache3.x学习(二)分层的选项
    Ehcache3.x学习(一)入门
    java进行微信h5支付开发
  • 原文地址:https://www.cnblogs.com/SharpL/p/4594128.html
Copyright © 2011-2022 走看看