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 Views Using ViewBag

Move the data in the Detail.cshtml view to the ComicBooksController.cs controller's Detail action method. Use the title

I'm getting stuck on the first part of this challenge. I have my code formatted similar to that in the video, but keep getting an error that my code can't be compiled. If anyone can tell me what I'm doing wrong, it would greatly be appreciated.

Thanks.

VideoGamesController.cs
using System.Web.Mvc;

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 Character[]
                {
                     "Mario",
                     "Princess Peach",
                     "Bowser",
                     "Toad",
                     "Yoshi"
                }
            };    

            return View(videoGame);
        }
    }
}
Detail.cshtml
@{
    Layout = null;


}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Video Game Detail</title>
</head>
<body>
    <div>
        <h1>ViewBag.Title</h1>

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

        <h5>Characters:</h5>
        <div>
            <ul>
                @foreach (var character in ViewBag.Character)
                {
                    <li>@character</li>
                }
            </ul>
        </div>
    </div>
</body>
</html>

2 Answers

Steven Parker
Steven Parker
229,644 Points

:point_right: The challenge asks you to create ViewBag elements.

Your code is trying to construct a VideoGame object, but no such object is defined. You need to create this as ViewBag elements instead.

Also note that Characters is a simple string array. There is no Character object.

Finally, View does not get an argument.

The following codes work for both tasks.

using System.Web.Mvc;

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

}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Video Game Detail</title>
</head>
<body>
    <div>
        <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>
    </div>
</body>
</html>