Question

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

Was it helpful?

Solution

You need to cast in the View

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

OTHER TIPS

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.

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>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top