This tutorial will focus on ASP.NET Core MVC; as developers, we can use ViewBag or ViewData to send data from the server to the client side. These protocols provide simple and efficient data transport to the client side without the need for sophisticated client-side frameworks or libraries. This article will look at how to pass ViewBag or ViewData to JavaScript in ASP.NET MVC and ASP.NET Core MVC, with code samples.


What are ViewBag and ViewData?

ViewBag and ViewData are classes supplied by the ASP.NET MVC framework that allow us to transmit data from the controller to the views. They are temporary data containers capable of storing any object and transferring data between the controller and display.

ViewBag in ASP.NET MVC framework
ViewBag is a dynamic object that can contain any object. It is a property of the ControllerBase class, which is the foundational class for all ASP.NET controllers. ViewBag is a dynamic object, which means it can be assigned any value at runtime.

ViewData in ASP.NET MVC framework
ViewData is a dictionary-like object that is part of the ViewDataDictionary class. ViewData is a collection of key-value pairs that can store any object. The keys are strings, while the values are objects.

How to pass data from ViewBag or ViewData to JavaScript?
ASP.NET Core MVC allows developers to send data from the server to the client using ViewBag or ViewData. These protocols provide simple and efficient data transport to the client side without the need for sophisticated client-side frameworks or libraries. This post will look at how to transmit data from ViewBag or ViewData to JavaScript in ASP.NET Core MVC, with code examples.

There are several ways to pass data from ViewBag or ViewData to JavaScript. Let's look at some of the most common methods.

Using a hidden input field
A hidden input field is a simple method for passing data from ViewBag or ViewData to JavaScript. In your view, you may add a hidden input field and set its value to the data you want to send. Then, in JavaScript, you can retrieve the value of the input field and use it as needed.

In ASP.NET Core MVC, the following example shows how to use a hidden input field to send data from ViewBag to JavaScript.

@{
    ViewBag.MyData = "Peter Blog Post";
}
<input type="hidden" id="my-data" value="@ViewBag.MyData" />
<script>
    var myData = document.getElementById("my-data").value;
    console.log(myData); // Output: "Ziggy, Rafiq Blog Post"
</script>


Using JSON serialization

Another way to pass data from ViewBag or ViewData to JavaScript is by serializing the data as JSON and then using it in your JavaScript code. This method is useful when passing more complex data types, such as objects or arrays.

Below is an example of using JSON serialization to pass data from ViewData to JavaScript in ASP.NET Core MVC.
@{
    ViewData["MyData"] = new { Name = "Lerzan", Age = 28 };
}
<script>
    var myData = @Html.Raw(Json.Serialize(ViewData["MyData"]));
    console.log(myData.Name); // Output: "Lerzan"
    console.log(myData.Age); // Output: 28
</script>


Using AJAX
Finally, AJAX can pass data from ViewBag or ViewData to JavaScript asynchronously. This method is useful when you want to load data dynamically from the server side without refreshing the page.

Below is an example of using AJAX to pass data from ViewBag to JavaScript in ASP.NET Core MVC.
@{
    ViewBag.MyData = "Peter Blog Post";
}

<script>
    $.ajax({
        url: '@Url.Action("GetData")',
        type: 'GET',
        data: { myData: '@ViewBag.MyData' },
        success: function (data) {
            console.log(data); // Output: "Peter Blog Post"
        }
    });

</script>
// Controller action method
public ActionResult GetData(string myData)
{
    return Content(myData);
}


In the example above, we use jQuery AJAX to call the "GetData" action method on the server side and pass the ViewBag data as a query string parameter. The server-side method returns the data as plain text, which is then logged to the console in the AJAX success callback.

Passing ViewBag Data to JavaScript
To pass ViewBag data to JavaScript, we can create a script block in the view and assign the value of ViewBag to a JavaScript variable. Here's an example below.
public class HomeController : Controller
{
    public IActionResult Index()
    {
        ViewBag.Message = "I am Peter";
        return View();
    }
}
@{
    ViewBag.Title = "Peter Website";
}
<script>
    var message = '@ViewBag.Message';
    alert(message);
</script>


In the above example, we assigned a value to ViewBag in the controller. Then we accessed the ViewBag data in the view by creating a script block and assigning the value to a JavaScript variable. We then displayed an alert box with the message value.
Passing ViewData Data to JavaScript

To pass ViewData data to JavaScript, we can create a hidden input field in the view and assign the value of ViewData to the field. We can then access the value of the hidden input field in JavaScript. Here's an example,
public class HomeController : Controller
{
    public IActionResult Index()
    {
        ViewData["Message"] = "This is Peter Blog Site";
        return View();
    }
}
@{
    ViewData["Title"] = "Peter Blog";
}
<input type="hidden" id="message" value="@ViewData["Message"]" />

<script>
    var message = document.getElementById("message").value;
    alert(message);
</script>


In the above example, we assigned a value to ViewData in the controller and then accessed the ViewData data in the view by creating a hidden input field and assigning the value to the field. We then accessed the value of the hidden input field in JavaScript and displayed an alert box with the message value.

Summary
To summarize, we looked at how to transmit data from ViewBag or ViewData to JavaScript in ASP.NET MVC and ASP.NET Core MVC. We discovered that using ViewBag and ViewData efficiently transports data from the server to the client side, making web applications more interactive and dynamic. We may quickly transmit data to the client without the use of sophisticated frameworks or libraries by converting data to JSON, giving values to JavaScript variables, or accessing data through hidden fields. These strategies can improve the user experience and result in more powerful and responsive web apps.