Asp.Net Mvc: TempData续

环境:

Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0

一. 在Asp.Net Mvc应用程序中禁用SessionState

在Asp.Net Mvc: 浅析TempData机制一文中,我们简单探讨了Asp.Net Mvc中TempData的实现机制,由 此得知默认情况下,TempData的DataProvider实现为基于Session的存储方式。

采用Session作为默认的数据存储方式,原本合情合理,只是,有时候,我们的网站中却不允许使用 Session,需要禁用这家伙,如果这时候你只是简单的在Web.config中加上SessionState的禁用配置,就 OK了吗?当然不是!

来看看情况吧:

给Web.config加上<sessionState mode="Off" />,然后运行程序,页面上马上会报告一个异常 :

原因很简单,根据前文分析,无论如何,每次Action执行的时候都会Load和Save TempData,而此时如 果我们禁用了Session,那么就必然出现上述异常。

那现在怎么办呢?其实,我甚至都不想在我的应用程序中使用TempData,我只是想禁用SessionState ,然道,我要为此去实现另外一套TempDataProvider吗?代价是不是太高了?刚才说了,其实我压根儿都 不想使用TempData,那么我为何不干脆实现一个啥事也不干的TempDataProvider得了。

二. 自定义一个NullTempDataProvider

嗯,现在就来写一个啥事也不干的TempDataProvider:

正如你看到的,NullTempDataProvider确实啥也没干,就是说,你写了貌似TempData["name"] = "Tristan"之类的语句等于白写,但前面说了,我不用TempData,所以,是可以接受的。

好了,替代品写好了,现在就要考虑怎么替代掉那个默认的SessionTempDataProvider了。

时间: 2024-11-03 05:11:15

Asp.Net Mvc: TempData续的相关文章

ASP.NET MVC 入门 6、TempData

ASP.NET MVC的TempData用于传输一些临时的数据,例如在各个控制器Action间传递临时的数据或者给View传递一些临时的数据,相信大家都看过"在ASP.NET页面间传值的方法有哪几种"这个面试题,在ASP.NET MVC中TempData的就是其中的一种传值方法.TempData默认是使用Session来存储临时数据的,TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的.这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Sessi

Asp.Net Mvc: 浅析TempData机制

环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0 一. Asp.Net Mvc中的TempData 在Asp.Net Mvc框架的ControllerBase中存在一个叫做TempData的Property,它的类型为 TempDataDictionary,顾名思义是一个字典类.TempData在Asp.Net Mvc中的作用是:可用于在Action执 行过程之间传值.简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在

ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续

转自http://www.cnblogs.com/haogj/archive/2011/11/15/2249147.html 查看 StoreManager 控制器的代码 现在,Store Manager 控制器中已经包含了一定数量的代码,我们从头到尾重新过一下. 首先,在控制器中包含了标准的 MVC 控制器的代码,为了使用方便,还可以引用我们的模型类所在的命名空间 MvcMusicStore.Models.控制器还拥有了一个私有的 MusicStoreEntities 的私有成员,以方便控制器

自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let's go!   1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.N

利用ASP.NET MVC源代码调试你的应用程序

之前写了一篇博客:利用.NET Framework4.0的源代码调试你的应用程序.那篇文章教你如何利用.NET Framework4.0的源代码帮助你调试应用程序,其实也就是进入.NET Framework4.0源代码进行单步调试.由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试ASP.NET MVC程序的时候,有不明白的地方,就单步进入ASP.NE

ASP.NET MVC实现POST方式的Redirect

我们知道,在ASP.NET MVC中,要从一个Action跳转到另一个Action,通常是用一系列以"Redirect"开头的方法 Redirect RedirectToAction RedirectToRoute 之类的. 但是使用Redirect系列的方法进行跳转时,默认是使用GET方法的,也就是说,如果你的跳转请求带有参数,那么这些参数将全部暴露在跳转后的url中,增加了不安全性(特别是如果参数中包含密码.密钥等等敏感数据) 于是就想到了用POST方法传递数据,这样至少一般的访问

ASP.NET MVC Controller激活系统详解:总体设计

我们将整个ASP.NET MVC框架划分为若干个子系统,那么针对请求上下文激活目标Controller对象的子系统被我们成为Controller激活系统.在正式讨论Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统在ASP.NET MVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么. 一.Controller 我们知道作为Controller的类型直接或者间接实现了IController接口.如下面的代码片断所示,I

通过实例模拟ASP.NET MVC的Model绑定机制:数组

[续<通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型]>]基于数组和集合类型的Model绑定机制比较类似,对于绑定参数类型或者参数类型的某个属性为数组或者集合,如果ValueProvider根据对应的Key能够匹配多条数据,那么这些数据最终将会转换为绑定的数组/集合的元素.此外,针对数组/集合的Model绑定还支持基于索引的方式.[源代码从这里下载] 一.基于名称的数组绑定 对于针对NameValueConllectionProvider来说,通过GetValue方

ASP.NET MVC的View是如何被呈现出来的?[设计篇]

在前面的四篇文章中,我们介绍了各种ActionResult以及相关的请求响应机制,但是与"View的呈现"相关的ActionResult是ViewResult.通过ViewResult的执行实现的对View的呈现比上面我们介绍的各种ActionResult要复杂得多,ASP.NET MVC内部设计了一个扩展的View引擎实现了最终的View呈现工作.[本文已经同步到<How ASP.NET MVC Works?>中] 一.View引擎中的View ASP.NET MVC为我