MVC(二)

通过前一篇文章,我们对MVC有了一定的了解。

三、MVC能做什么

网站——服务器返回页面——实际上就是一段文本(response header+html)。

实际上mvc的action可以返回一切东西:页面 字符串 json xml file 图片。。。

与webapi的区别:其实也一样,因为二者都是一个http协议,就是响应请求,返回数据

专人做专事儿,webapi自宿主,管道模型不一样,而且对httpmethod支持不一样

四、MVC传值

ViewData和ViewBag其实是一回事, ViewBag其实是对ViewData的封装, 其内部其实是使用ViewData实现数据存储的。唯一的不同点是,ViewBag可以存储动态类型(dynamic)的变量值, 而ViewData只能存储String Key/Object Value字典数组

  • ViewData的只在当前当前的请求中有效,生命周期和View相同,其值不能在多个请求中共享。
  • 在重定向(redirection)后,ViewData中存储的变量值将变为null。
  • 在取出ViewData中的变量值是,必须进行合适的类型转换(隐式或显式)和空值检查

  • ViewBag也只在当前的请求中有效。

  • 在重定向(redirection)后,ViewBag中存储的变量值将变为null
  • 因为ViewBag是动态类型,所以我们在取得其值时,不需要进行类型转换。

TempData也是一个String Key/Object Value字典数组。 和ViewData与ViewBag不同的是其所存储的数据对象的生命周期。 如果页面发生了跳转(Redirection),ViewBag和ViewData中的值将不复存在, 但是TempData中的值依然还在。 换句话讲, ViewBag和ViewData存储的值的生命周期只有在从Controller到View中, 而TempData中的数据不仅在从Controller到View中有效,在不同的Action之间或者从一个页面跳转到另一页面(Controller to Controller)后依然有效。

  • TempData是一个继承自TempDataDictionary类的字典对象,它默认情况下是基于Session存储机制之上的。(备注: 你也可以让你的TempData基于其他存储机制之上, 我们可以提供我们自定义的ITempDataProvider来完成,具体可以参见:Session-less Controllers and TempData in ASP.NET MVC)
  • TempData是用来在多个Actions或从当前请求向子请求, 页面发生了重定向(Redirection)时传递共享数据。
  • 只有在目标视图(View)完全加载后才有效。
  • 在取出TempData存储的变量值时,必须进行合适的类型转换(隐式或显式)和空值检查。
  • TempData主要用在需要在多个Actions或者页面重定向时共享传递数据时使用

Session其实和ViewData类似,也是一个String Key/Object Value字典数组。但是,Session是存储在客户端的Cookies中,所以它的生命周期是最长的。 但是,正因为其存储的客户端, 所以必须确保没有敏感机密的信息存储其中

  • Session也是ASP.NET MVC程序传递值的一种方式,但与TempData不同,用户的整个会话中Session都不会过期。
  • Session在同一用户会话过程中的所有请求中有效,比如,刷新页面。
  • Session中的值也需要进行类型转换(隐式或显式)和非空检查。
  • Session的生命周期是最长的,但是它默认使用的是Cookies来存储数据,所以使用的时候必须注意数据保密的问题。 综上, Session主要用在需要在多个Controllers, Actions and Views共享数据(非敏感数据)时使用。

本文参考文档:https://www.cnblogs.com/EasonWu/p/beginner-aspnet-mvc-various-ways-of-passing-data-in-mvcapps.html;

https://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html;

https://blog.csdn.net/shuaishenkkk/article/details/8570463;

https://www.codeproject.com/Articles/576514/AplusBeginner-splusTutorialplusonplusVariousplus;

微软文档地址:

Controllerbase: https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controllerbase.viewdata?view=aspnet-mvc-5.2;

Razor 语法:https://docs.microsoft.com/zh-cn/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c;

MVC5:https://docs.microsoft.com/zh-cn/aspnet/mvc/overview/getting-started/introduction/;

MVC5视频地址:https://app.pluralsight.com/player?author=scott-allen&name=aspdotnet-mvc5-fundamentals-m1-introduction&mode=live&clip=0&course=aspdotnet-mvc5-fundamentals;

Original: https://www.cnblogs.com/Dewumu/p/10508082.html
Author: 德乌姆列特
Title: MVC(二)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606858/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • linux命令之查找grep

    grep(全称:Global Regular Expression Print)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来。它的使用权限是所有用户…

    Linux 2023年5月27日
    0107
  • 利用卷积神经网络处理cifar图像分类

    这是一个图像分类的比赛CIFAR( CIFAR-10 – Object Recognition in Images ) 首先我们需要下载数据文件,地址: http://…

    Linux 2023年6月6日
    0121
  • NO.6 HTML+CSS 笔记

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0104
  • 高通平台如何避免误入FFBM模式

    前面两篇博客分别介绍了通过fastboot和QFIL工具退出FFBM模式的方法。虽然售后的同学可以这么指导用户做恢复,但步骤多操作也麻烦,且属于事后处理,如果大面积高概率地出现,会…

    Linux 2023年6月7日
    0110
  • 3.20 什么是环境变量,Linux环境变量有哪些?

    变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(…

    Linux 2023年6月7日
    0110
  • 记一次PowerShell配合Metersploit的艰难提权

    0x01 环境准备 kali(模拟公网攻击机) Windows2008(靶机,装有360、火绒、安全狗、D盾) Powersploit(PowerShell攻击框架) https:…

    Linux 2023年5月28日
    087
  • OpenStack 发放云主机

    登陆网址 具体安装步骤欢迎参照我的博客:https://www.cnblogs.com/kongshuo/p/16618008.html用户名 admin 密码 redhat 创建…

    Linux 2023年6月8日
    0123
  • 文件的压缩与打包

    文件的压缩与打包 常用文件拓展名 *.tar.gz tar程序打包的文件,并且经过gzip的压缩 *.tar.bz2 tar程序打包的文件,并且经过bzip2的压缩 tar 命令,…

    Linux 2023年6月11日
    090
  • sed与awk命令

    1.1 sed命令语法 在看单个命令以前,需要回顾一下关于所有sed命令的两点语法。在上一个章中,我们介绍了其大部分内容。行地址对于任何命令都是可选的。它可以使一个模式,被描述为由…

    Linux 2023年6月7日
    0115
  • redis限流的3种实现方式

    Redis限流的实现方式有3种,分别是:1、基于Redis的setnx的操作,给指定的key设置了过期实践;2、基于Redis的数据结构zset,将请求打造成一个zset数组;3、…

    Linux 2023年5月28日
    0102
  • CentOS7 小技巧总结

    1.CentOS7 解决无法使用tab自动补全 csharp;gutter:true; 原因:CentOS在最小化安装时,没有安装自动补全的包,需要手动安装。 yum -y ins…

    Linux 2023年6月7日
    0126
  • vue组件传值和路由——day04

    <script><br> var vm = new Vue({<br> el: ‘#app’,<br> data: {<br&…

    Linux 2023年6月7日
    0103
  • js打印前几天或后几天的日期

    创作对你我有价值的,喜欢交朋友,失忆王子,期待与你共同探讨,技术qq群153039807 Original: https://www.cnblogs.com/hshanghai/p…

    Linux 2023年6月13日
    0108
  • 真·Android Zxing 扫码中文乱码解决

    Zxing3.2.1 之前遇到过Android Zxing扫码乱码的问题,网上搜了下解决了下。 今天又遇到了问题。 依然会乱码。 研究总结如下: Zxing 可以在Hints中添加…

    Linux 2023年6月13日
    083
  • 我叫Mongo,干了「索引探索篇」提升我的效率,值得您拥有

    这是mongo第四篇”索引探索”,后续会连续更新4篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟…

    Linux 2023年6月14日
    084
  • Springboot 实现Redis 同数据源动态切换db

    参考:https://developer.aliyun.com/article/952648 Original: https://www.cnblogs.com/herd/p/16…

    Linux 2023年5月28日
    0112
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球