3 ways to pass data from controller to view

Sourav.Kayal
Posted by in ASP.NET MVC category on for Beginner level | Points: 250 | Views : 3418 red flag
Rating: 4.5 out of 5  
 2 vote(s)

3 different ways to pass data from controller to view.

3 ways to pass data from controller to view

In this article we will discuss three different ways to pass data from controller to view in MVC web application. Those three approaches are , using ViewBag ,ViewData and TempData

ViewBag:-

ViewBag is a dynamic approach to pass data.

It’s available only in MVC3 .

It does not require type casting for complex data type. Means there is no type cast needed even if we pass object of a class.

It does not retain value in redirection.

 

ViewData:-

It store data in Key value pair(Like session)

Type casting is needed for complex data type

ViewData cannot retain it’s value in redirection.

 

TempData:-

Type cast is needed for complex data type.

Store data using Kay(Like session)

Can able to retain value in redirection.

 So, those are the basic difference among them. Now we will implement them in a small example

 

Create Person class in Model
using System;
using System.ComponentModel.DataAnnotations;
 
namespace PersonModel
{
    public class Person
    {
        public String Name { get; set; }
        public String Surname { get; set;}
 
    }
}

 

This is our small person class containing two properties called Name and Surname

 

Create controller class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
namespace MVCTest.Controllers
{
    public class PersonController : Controller
    {
      
        public ActionResult ShowUser()
        {
PersonModel.Person P = new PersonModel.Person();
P.Name = "Sourav";
P.Surname = "Kayal";
  ViewBag.Person = P;
ViewData["P"] = P;
TempData["P"] = P;
            return View("Show");
        }
 
    }
}

In this Person controller we have implemented ShowUser() action which will assign object of Person class in ViewBag, ViewData and TempData and it will call to Show view.

 

Create View
@model PersonModel.Person
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <title>Show</title>
</head>
<body>
    <div>
    @{
        var ViewBagValue = ViewBag.Person;
        var ViewDataValue =(PersonModel.Person) ViewData["P"];
        var TempDataValue =(PersonModel.Person) TempData["P"];
    }
     Name is :-  @ViewBagValue.Name<br/>
     Name is:-  @ViewDataValue.Name <br />
     Name is:-  @TempDataValue.Name <br />
       
    </div>
</body>
</html>

Here we are extracting value from three different variables. We can see there is no casting needed for ViewBag where casting needed for ViewData and TempData

Here is sample output:-


Conclusion

Here we have learned how to pass data from controller to view in various ways. Hope you have enjoyed it.
Page copy protected against web site content infringement by Copyscape

About the Author

Sourav.Kayal
Full Name: Sourav Kayal
Member Level: Silver
Member Status: Member,MVP
Member Since: 6/20/2013 2:09:01 AM
Country: India
Read my blog here http://ctrlcvprogrammer.blogspot.in/
http://www.dotnetfunda.com
I am .NET developer working for HelixDNA Technologies,Bangalore in healthcare domain. Like to learn new technology and programming language. Currently working in ASP.NET ,C# and other microsoft technologies.

Login to vote for this post.

Comments or Responses

Login to post response

Comment using Facebook(Author doesn't get notification)