Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# ASP.NET MVC Basics Modeling and Presenting Data Using Strongly Typed Views

Josh Boersma
PLUS
Josh Boersma
Courses Plus Student 2,486 Points

Update Controller from ViewBag to Model

Challenge: Update the VideoGamesController.cs controller to use the VideoGame data model. Add a using directive for the Treehouse.Models namespace. Instantiate an instance of the VideoGame data model. Move the ViewBag property values to their respective data model properties. Pass the VideoGame data model instance into the View method call.

I'm at work and unable to view the compiler errors. I tried including a random Id and Publisher, but that didn't work. Any direction pointing or tips would be great.

VideoGamesController.cs
using System.Web.Mvc;
using Treehouse.Models;

namespace Treehouse.Controllers
{
    public class VideoGamesController : Controller
    {
        public ActionResult Detail()
        {
            var videogame new VideoGame()
            {
                Title = "Super Mario 64",
                Description = "Super Mario 64 is a 1996 platform video game developed and published by Nintendo for the Nintendo 64.",
                Characters = new string[]
                {
                    "Mario",
                    "Princess Peach",
                    "Bowser",
                    "Toad",
                    "Yoshi",
                }
            };
            return View(videogame);
        }
    }
}
Detail.cshtml
@{
    ViewBag.PageTitle = "Video Game Detail";
}

<h1>@ViewBag.Title</h1>

<h5>Description:</h5>
<div>@ViewBag.Description</div>

<h5>Characters:</h5>
<div>
    <ul>
        @foreach (var character in ViewBag.Characters)
        {
            <li>@character</li>
        }
    </ul>
</div>
VideoGame.cs
namespace Treehouse.Models
{
    // Don't make any changes to this class!
    public class VideoGame
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string[] Characters { get; set; }
        public string Publisher { get; set; }

        public string DisplayText
        {
            get
            {
                return Title + " (" + Publisher + ")";
            }
        }
    }
}

2 Answers

Steven Parker
Steven Parker
231,268 Points

It looks like you're missing an assignment operator ("=") on this line:

            var videogame new VideoGame()
Steven Parker
Steven Parker
231,268 Points

No need to be embarrased. Mistakes are part of learning, and we're all here to learn.
Happy coding!

Andrew Cunning
Andrew Cunning
1,393 Points

What does it mean to add the using directive of Treehouse.Models. I don't remember the instructor doing that in the controller file of the Visual Studio Comic Book Gallery site?

Edit: Nevermind, I rewatched the video and I see how he adds that using directive by clicking the option box after the red line error appeared. I just didn't connect the dots as I didn't actually see visual studio adding that at the top of the file.