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

Issue with Layout removal.

My code won't pass because it keeps asking if I have removed the Layout property. I have and it keeps repeating the same error message. Why is that? What am I missing?

VideoGamesController.cs
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();
        }
    }
}
Detail.cshtml
@{ 


    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"
    };
}

<!DOCTYPE html>

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

        <h5>Description:</h5>
        <div>@description</div>

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

3 Answers

Steven Parker
Steven Parker
221,328 Points

It's asking about the "Layout" property because you should not remove it, but it appears that you have.

But you will want to remove the old assignments that were moved to the controller and converted to use ViewBag instead of replicating the controller code. Then you will also convert the old references to use the new ViewBag values.

It wouldn't pass when I kept the layout property. It asked if I had removed it, then I removed it and it gave the same error message.

Steven Parker
Steven Parker
221,328 Points

Converting the other values to ViewBag may have confused the validator. Be sure to remove those. And to convert all the references in the page code.

To confirm, remove all of the "ViewBag" values in the Detail.cshtml?

Steven Parker
Steven Parker
221,328 Points

Remove the ones there now, yes. But then the references to the old variables will need to be converted to ViewBag references.