zanona
zanona

Reputation: 12717

ASP.NET MVC - How to pass an Array to the view?

I'm struggling myself here, to find a easy way to pass an array from the controller to the view on ASP.NET MVC framework.

so in my controller I would have something like:

public class HomeController : ApplicationController
{   
    public ActionResult Index()
    {
        string[] myArray = { "value01", "value02", "value03"};
        ViewData["passedArray"] = myArray;
        return View();
    }
}

so in my view I would have just a call to ViewData["passedArray"] and run a loop on it.

But apparently the ViewData is being received by the view as System.String, probably because of the declaration on the Array DataType, but unfortunately I don't know how to pass it properly and simply without create millions of code lines.

It would be fantastic if one could help me.

Thanks in advance

Upvotes: 9

Views: 33716

Answers (3)

Israel Ocbina
Israel Ocbina

Reputation: 577

You can use PartialView like this:

  • Controller

        public ActionResult Index()
        {
            List<string> arr = new List<string>() { "apple", "banana", "cat" };
            return View(arr);
        }
    
  • View

@model List<string>
@foreach (var item in Model) { 
        @Html.Partial("~/Views/Shared/Fruits/_myFruits.cshtml", item);
}
  • PatialView i.e. _myFruits.cshtml
@model  string
<li>@Model</li>

Upvotes: 1

Daniel Elliott
Daniel Elliott

Reputation: 22857

You need to cast in the View

<% var myArray = (string[])ViewData["passedArray"]; %>

Upvotes: 16

David Andres
David Andres

Reputation: 31781

This should work by casting ViewData["passedArray"] within the view to string[]. Alternatively, if you want to go the extra mile: create a ViewModel class that contains this array as a member and pass that ViewModel to a strongly-typed version of your view.

Upvotes: 9

Related Questions