Reputation: 12717
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
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); }
@model string <li>@Model</li>
Upvotes: 1
Reputation: 22857
You need to cast in the View
<% var myArray = (string[])ViewData["passedArray"]; %>
Upvotes: 16
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