santiagoIT
santiagoIT

Reputation: 9431

Render Partial View from within a System.Web.Helpers.WebGrid

I am trying to render a Partial from within a System.Web.Helpers.WebGrid

my model class looks like this:

class GameInfo
{
    public List<AppUser> Team1 { get; set; }
        public List<AppUser> Team2 { get; set; }
    // and more properties
}

class AppUser
{
        public string PictureUrl { get; set; }
        public string ProfileUrl { get; set; }
        public long GamesWon { get; set; }
        public long GamesLost { get; set; }
        public int Points { get; set; }
    // and more properties
}

I want my GridView to show a list of GameInfo's in my grid view. What is turning out be to be tougher than expected is rendering the Teams (List). To stay DRY I created a partial view to render a Team (_Team.cstml).

This is my razor code:

@if (Model != null)
{
   var webgrid = new WebGrid(source: Model.Games,
   rowsPerPage: 10);


<div id="grid">
    @webgrid.GetHtml(
    columns: webgrid.Columns(           
         webgrid.Column(header: "Score", format: @<text>@item.Score1/@item.Score1</text>),
         webgrid.Column(header: "Team 1", format: (item) =>
            {

                return "hello sb"; // this line works!
                //return Html.Partial("_Team", item.Team1);  // this gives an error
            })
         )
         )
</div>
}

Any idea how I can get this to work?

Thank you!

Upvotes: 2

Views: 1894

Answers (1)

santiagoIT
santiagoIT

Reputation: 9431

In case someone else runs into this, I managed to solve it this morning. This works:

webgrid.Column(header: "Team 1", format: (item) =>
                {
                    List<Cuarenta.Web.Models.AppUser> team = ((Cards.Cloud.WebRole.Admin.GameInfo)item.Value).Team1;                       
                    return Html.Partial("_Team", team);
                })

Upvotes: 8

Related Questions