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

mikkel pohjola
mikkel pohjola
1,966 Points

what is wrong with my code

i am a litle lost on this task, in the video i am making a comicbook and here a videogame so it confuse me a litle on what to do, so i need help to move on with this challange

so what am i doing wrong here. :)

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 characters[]
            {
                new characters(){Characters = "Mario"},
                new characters(){Characters = "Princess Peach"},
                new characters(){Characters = "Bowser"},
                new characters(){Characters = "Toad"},
                new characters(){Characters = "Yoshi"}
            }
         };  

            return View(videoGame);
        }
    }
}
Detail.cshtml
@model VideoGame.Models.VideGame;
@{
    @Model.PageTitle = "Video Game Detail";
}

<h1>@Model.Title</h1>

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

<h5>Characters:</h5>
<div>
    <ul>
        @foreach (var character in Model.Characters)
        {
            <li>@character.Characters</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 + ")";
            }
        }
    }
}

4 Answers

James Churchill
STAFF
James Churchill
Treehouse Teacher

Mikkel,

Good job finding a solution to the code challenge! Just to make sure that you understood the problems with the code that you posted, I'll give you a breakdown here.

1) In the controller, the code to initialize the properties on the VideoGame model object was a bit off. The characters property is actually Characters with a capital "C". Also, it should be initialized to an array of string values.

Here's what the correct code should look like:

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

2) In the view, the @model directive had the incorrect namespace.

@model Treehouse.Models.VideoGame;

3) The code block in the view that sets the ViewBag PageTitle property shouldn't have been changed. So, this code in the view:

@{
    @Model.PageTitle = "Video Game Detail";
}

should have stayed like this:

@{
    ViewBag.PageTitle = "Video Game Detail";
}

I hope this helps.

Thanks ~James

Chanuka Weerasinghe
Chanuka Weerasinghe
2,337 Points

Oh and Mr Churchill - You are becoming my favourite teacher at TH. Your EF migration course was excellent! so is this.

James Churchill
James Churchill
Treehouse Teacher

Chanuka,

I'm glad to hear that you're enjoying my courses! Thanks for the feedback ~James

Chanuka Weerasinghe
Chanuka Weerasinghe
2,337 Points

Just in case if someone needs it.

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"
            },
            Publisher = ""
        };
        return View(videoGame);
    }
}

}

mikkel pohjola
mikkel pohjola
1,966 Points

Yea i like it to although I sometimes get Imposter syndrome, when I sit with challanges ??