Click here to Skip to main content
13,191,638 members (65,854 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


7 bookmarked
Posted 1 Jun 2014

Using TempData Outside the Controller in ASP.NET MVC

, 1 Jun 2014
Rate this:
Please Sign up or sign in to vote.
Using TempData outside the controller in ASP.NET MVC and making TempData less prone to error and more intuitive.

What is the Problem We Are Trying to Fix?

When you start using Tempdata, it quickly becomes evident that maintaining it will be quite a challenge because Intellisense doesn't support Tempdata since it's a Dictionary. Without intellisense, suddenly life looks gloomy, but no fear. There is hope!

My Problem

The problem raised when I wanted to use Notification Object across my website. I wanted to throw this object from one controller to the other (tempdata job) and finally send it to the view. If I wanted to use TempData["something"], then I have to remember this "something".

So instead of hardcoding this "something" inside the controller, I decided to put the hardcoding inside a Helper.cs function and simply call intuitive functions that will Get/Set/Remove the object. The beauty of it is that - there is Intellisense to help us out!


The solution is quite simple.

  1. Create the Notification object
  2. Create a helper function that will do the dirty work (get;set;remove)

Since we moved TempData outside the controller, we are obliged to send the controller to be able to use the TempData. We send the controller by the keyword this.


public class PromptNotification //Notification Object
    public bool NotificationSuccess { get; set; }
    public string NotificationMessage { get; set; }


public static void SetPromptNotification(Controller controller, bool success,string message)
    PromptNotification promptNotification = new PromptNotification
        NotificationSuccess = success,
        NotificationMessage = message
    controller.TempData["PromptNotification"] = promptNotification;

public static PromptNotification GetPromptNotification(Controller controller)
        PromptNotification promptNotification = controller.TempData["PromptNotification"] 
            as PromptNotification;
        return promptNotification;
     catch (Exception ex)
         // log error here

         return null;

public static void RemovePromptNotification(Controller controller)

UserController.cs //set

// add promp message => redirect to index
Helper.SetPromptNotification(this, true, 
    "You will shortly receive an email, please verify your registration.");

MainController.cs //get

// get promptnotification => if it exist => pass it to the view => clear the notification
PromptNotification promptNotification = Helper.GetPromptNotification(this);

if (promptNotification != null)
    ViewBag.NotificationSuccess = promptNotification.NotificationSuccess;
    ViewBag.NotificationMessage = promptNotification.NotificationMessage;



@if (ViewBag.NotificationSuccess != null)
    PromptNotification promptNotification = new PromptNotification
        NotificationSuccess = (bool)ViewBag.NotificationSuccess,
        NotificationMessage = ViewBag.NotificationMessage as string
    string notificationClassName = String.Empty;

    if (promptNotification.NotificationSuccess == true)
        notificationClassName = "notificationSuccessWrapper";
        notificationClassName = "notificationErrorWrapper";
    <div class="@Html.Raw(notificationClassName)">


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Serge Jerkezian
Software Developer (Senior)
Lebanon Lebanon
Passionate Software Developer with over 3 years of experience in the field. In love with the girl next door and the MVC architecture.

You may also be interested in...


Comments and Discussions

Questionno Pin
asobreiro8-Aug-14 4:33
memberasobreiro8-Aug-14 4:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171017.2 | Last Updated 2 Jun 2014
Article Copyright 2014 by Serge Jerkezian
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid