• ASP.NET MVC 入门6、TempData


    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/jianxia_wzx/article/details/37901713

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/04/1303948.html

    ASP.NET MVC的TempData用于传输一些暂时的数据,比如在各个控制器Action间传递暂时的数据或者给View传递一些暂时的数据,相信大家都看过“在ASP.NET页面间传值的方法有哪几种”这个面试题,在ASP.NET MVC中TempData的就是当中的一种传值方法。TempData默认是使用Session来存储暂时数据的,TempData中存放的数据仅仅一次訪问中有效。一次訪问完后就会删除了的。这个一次訪问指的是一个请求到下一个请求,由于在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。我们看一下ASP.NET MVC Preview5源代码:

    image

    也就是说TempData仅仅保存到下一个请求中,下一个请求完了之后,TempData就会被删除了。注意这里TempData使用Session来做存储的,Session是相应特定用户的,所以并不存在并发问题。假设你用数据库来做TempData的存储介质的话,必需要考虑这个情况的。

    至于怎样自己定义TempData的存储介质,你能够參考“ASP.NET MVC: 用db4o来做TempDataProvider(另附一个泛型的RedirectToAction方法)”这一篇文章。

    前面说到的在我们的BaseController中有一个显示提示信息给用户的方法。这个提示信息就是暂时的信息,我们能够使用TempData来实现。以下让我们来实现这个提示信息的方法:

    复制代码
    protected ActionResult ShowMsg(List<string> msgs)
    {
        TempData[
    "Messages"= msgs;
        
    return RedirectToAction("Message");


    public ActionResult Message()
    {
        
    return View(TempData["Messages"as List<string>);
    }
    复制代码

    由于我们的Controller都继承自这个我们自己定义的BaseController,所以我么能够才Controller中这样来给用户显示提示信息:

    image


  • 相关阅读:
    TIF转JPG
    跨线程取出控件的值的写法(不是跨线程赋予控件值)
    oracle根据正则表达式查找对应的字段
    oracle数据库连接字符串
    access检测表没有的字段,添加之
    解决 Unable to load DLL 'OraOps9.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
    oracle关键字使用
    to_number,Extract oracle的关键字
    OracleCommand.CommandText 无效
    调用带参数的线程两种方法
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10799817.html
Copyright © 2020-2023  润新知