Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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
222,096 Points

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

            var videogame new VideoGame()
Steven Parker
Steven Parker
222,096 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.