首页 > 代码库 > MVC使用TempData跨控制器传递信息而无需记住key的名称
MVC使用TempData跨控制器传递信息而无需记住key的名称
通常情况下,使用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"; } <h2>Index</h2> @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"; } <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 { @: 暂无通知 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。