In this article I will explain with an example, how to pass (send) Array from Controller to View using ViewBag in ASP.Net MVC Razor.
The List Collection will be populated from Database using ADO.Net inside the Controller and it will be converted to Array and passed to the View using ViewBag.
Later in View, the Array will be iterated and the data will be displayed with the help of HTML Table in ASP.Net MVC Razor.
Note: For beginners in ASP.Net MVC, please refer my article ASP.Net MVC Hello World Tutorial with Sample Program example.
I have made use of the following table Customers with the schema as follows. CustomerId is an Auto-Increment (Identity) column.
Pass (Send) Array from Controller to View in ASP.Net MVC
I have already inserted few records in the table.
Pass (Send) Array from Controller to View in ASP.Net MVC
Note: You can download the database table SQL by clicking the download link below.
          Download SQL file
The Model class has the following properties.
public class CustomerModel
    public string CustomerId { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
You will need to import the following namespaces.
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
The Controller consists of the Index Action method. Inside this Action method, the records are fetched from the Customers Table using ADO.Net.
The records are inserted into the List Collection using SqlDataReader class object. Finally the List Collection is converted to Array and passed to the View using ViewBag.
public class HomeController : Controller
    // GET: Home
    public ActionResult Index()
        List<CustomerModel> customers = new List<CustomerModel>();
        string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
            string query = "SELECT * FROM Customers";
            using (SqlCommand cmd = new SqlCommand(query))
                cmd.Connection = con;
                using (SqlDataReader sdr = cmd.ExecuteReader())
                    while (sdr.Read())
                        customers.Add(new CustomerModel
                            CustomerId = sdr["CustomerId"].ToString(),
                            Name = sdr["Name"].ToString(),
                            Country = sdr["Country"].ToString()
        ViewBag.Customers = customers.ToArray();
        return View();
Inside the View, for displaying the records, an HTML Table is used. A loop (iteration) will be executed over the rows of the Array which will generate the HTML Table rows with the Customer records.
@using Pass_Array_ViewBag_MVC.Models;
    Layout = null;
<!DOCTYPE html>
    <meta name="viewport" content="width=device-width"/>
    <table cellpadding="0" cellspacing="0">
        @foreach (CustomerModel customer in (CustomerModel[])ViewBag.Customers)
Pass (Send) Array from Controller to View in ASP.Net MVC