How can I loop through a List of type Object?
List<object> countries = new List<object>();
countries.Add(new { Name = "United States", Abbr = "US" , Currency = "$"});
countries.Add(new { Name = "Canada", Abbr = "CA", Currency = "$" });
...more
I want to do something like (using property names) in my view
@model ViewModel
@foreach(object country in Model.Countries)
{
Name = country.Name
Code = country.Abbr
Currency = country.Currency
}
UPDATE: Forgot to mention that I am using MVC and I want to loop the data in View. Countries object is one of the property of ViewModel to view is strongly typed.
UPDATE: updating as asked to show how View is called from the controller -
[HttpPost]
public ActionResult Index(FormCollection form)
{
..some validations and some logic
ViewModel myViewModel = new ViewModel();
myViewModel.Countries = GetCountries(); -- this is where data get initialized
myViewModel.Data = db.GetData();
return PartialView("_myPartial", myViewModel);
}
var countries = new []{
new { Name = "United States", Abbr = "US", Currency = "$" },
new { Name = "Canada", Abbr = "CA", Currency = "$" }
};
foreach(var country in countries)
{
var Name = country.Name;
.....
}
If I understood well, you are trying to send the view model from the controller to the view. So if you are using razor your code should be like this
@model ViewModel
@foreach(object country in Model.countries)
{
var Name = country.Name
var Code = country.Abbr
var Currency = country.Currency
}
notice the keyword Model
.
Edit
// Code inside your controller should be like this
ViewModel myModel = new ViewModel();
List<object> countries = new List<object>();
countries.Add(new { Name = "United States", Abbr = "US" , Currency = "$"});
countries.Add(new { Name = "Canada", Abbr = "CA", Currency = "$" });
myModel.countries = countries;
return View("yourView", myModel); // you can write just return View(myModel); if your view's name is the same as your action
Hope it helps you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With