Adam
Adam

Reputation: 45

Display in loop elements from ViewBag

I try display in View using loop all elements from ViewBag

My ViewBag (in controller class)

ViewBag.MenuItems =
  (
     from components in _context.Components
     where components.ComponentName== "menuPosition"
     select new
     {
         controller = components.valueI,
         action = components.valueI,
      }
  ).ToList();

My View

@foreach (var item in ViewBag.MenuItems)
   {
   <p>@item.controller</p>
   }

I got error

RuntimeBinderException: 'object' does not contain a definition for 'controller'

Upvotes: 0

Views: 54

Answers (1)

Rutuja
Rutuja

Reputation: 460

Use ViewBag as List while looping it will treat viewbag element as MenuItem class object

@foreach (var item in ViewBag.MenuItems as List<MenuItem>)
{
    <p>@item.controller</p>
}

Add class

public class MenuItem
{
public string controller {get;set;}
public string action {get;set;}
}

In controller class use

ViewBag.MenuItems =
  (
     from components in _context.Components
     where components.ComponentName== "menuPosition"
     select new MenuItem
     {
         controller = components.valueI,
         action = components.valueI,
      }
  ).ToList();

Upvotes: 1

Related Questions