码迷,mamicode.com
首页 > Web开发 > 详细

MVC使用TempData跨控制器传递信息而无需记住key的名称

时间:2014-06-02 15:36:14      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

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

 

关于传递信息的类:

bubuko.com,布布扣
namespace MvcApplication1.Models
{
    public class Notification
    {
        public bool IsShow { get; set; }
        public string Content { get; set; }
    }
}
bubuko.com,布布扣

 

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

bubuko.com,布布扣
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");
        }
    }
}
bubuko.com,布布扣

 

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

bubuko.com,布布扣
using System.Web.Mvc;
using MvcApplication1.Extension;

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

    }
}
bubuko.com,布布扣

 

Home/Index.cshtml视图为:

bubuko.com,布布扣
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

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

bubuko.com,布布扣


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

bubuko.com,布布扣
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();
        }
    }
}
bubuko.com,布布扣


Test/Index.cshtml视图:

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

<h2>Test</h2>

@if (ViewData["t"] != null)
{
    Notification notification = new Notification()
    {
        IsShow = (bool)ViewData["t"],
        Content = ViewData["c"] as string
    };

    if (notification.IsShow)
    {
        @notification.Content
    }
    else
    {
        @: 有通知,但未发布
    }
}
else
{
  @: 暂无通知
}
bubuko.com,布布扣

bubuko.com,布布扣

MVC使用TempData跨控制器传递信息而无需记住key的名称,布布扣,bubuko.com

MVC使用TempData跨控制器传递信息而无需记住key的名称

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/darrenji/p/3764290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!