博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC使用TempData跨控制器传递信息而无需记住key的名称
阅读量:6255 次
发布时间:2019-06-22

本文共 2659 字,大约阅读时间需要 8 分钟。

通常情况下,使用TempData需要记住key的名称,本篇体验:通过帮助类,实现对TempData的设置、获取、删除。

 

关于传递信息的类:

namespace MvcApplication1.Models{    public class Notification    {        public bool IsShow { get; set; }        public string Content { get; set; }    }}

 

帮助类,使用TempData对信息处理:

using System;using System.Web.Mvc;using MvcApplication1.Models;namespace MvcApplication1.Extension{    public class NotificationHelper    {        public static void SetNotification(Controller controller, bool isShow, string content)        {            Notification notification = new Notification()            {                IsShow = isShow,                Content = content            };            controller.TempData["n"] = notification;        }        public static Notification GetNotification(Controller controller)        {            try            {                Notification notification = controller.TempData["n"] as Notification;                return notification;            }            catch (Exception ex)            {                //TODO:记录日志                return null;            }        }        public static void RemoveNotification(Controller controller)        {            controller.TempData.Remove("n");        }    }}

 

在HomeController中,把信息放到TempData中:

using System.Web.Mvc;using MvcApplication1.Extension;namespace MvcApplication1.Controllers{    public class HomeController : Controller    {               public ActionResult Index()        {            NotificationHelper.SetNotification(this, true, "放假了~~");            return View();        }    }}

 

Home/Index.cshtml视图为:

@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}

Index

@Html.ActionLink("看看TestController那边是否放假了","Index","Test")

在TestController中,获取TempData存储的信息:

using System.Web.Mvc;using MvcApplication1.Extension;using MvcApplication1.Models;namespace MvcApplication1.Controllers{    public class TestController : Controller    {        public ActionResult Index()        {            Notification notification = NotificationHelper.GetNotification(this);            if (notification != null)            {                ViewData["t"] = notification.IsShow;                ViewData["c"] = notification.Content;            }            return View();        }    }}

Test/Index.cshtml视图:

@using MvcApplication1.Models@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}

Test

@if (ViewData["t"] != null){ Notification notification = new Notification() { IsShow = (bool)ViewData["t"], Content = ViewData["c"] as string }; if (notification.IsShow) { @notification.Content } else { @: 有通知,但未发布 }}else{ @: 暂无通知}

转载地址:http://ufnsa.baihongyu.com/

你可能感兴趣的文章
Java并行执行任务的几种方案
查看>>
执行上下文、变量对象、作用域链、this,看这篇就够了!
查看>>
微服务分布式b2b b2c o2o电子商务云平台
查看>>
算法(2)KMP算法
查看>>
TCP/IP五层协议
查看>>
单例模式 写法
查看>>
关于ComponentScan
查看>>
JavaScript-算法-数组去除重复的元素
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
Netty实战之使用Netty解析交通部JT808协议
查看>>
手拉手教你实现一门编程语言 Enkel, 系列 9
查看>>
HTML 基础
查看>>
转行的程序猿都去做什么了?这些个案羡煞我也
查看>>
用Kotlin-koans学Kotlin【三】ii_collections
查看>>
java map 轉json,簡書搬遷到掘金
查看>>
React 源码解析之React.Children
查看>>
Node.js线上服务器部署与发布
查看>>
vue插槽以及作用域插槽的理解
查看>>
学习笔记(4.23)
查看>>
小程序开发前的准备工作之【深入封装Component】
查看>>