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

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
229,732 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
229,732 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
229,732 Points

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