Foreach dans un Foreach dans MVC Vue

BIG EDIT : j'ai édité mon post avec la réponse que j'ai trouvé avec l'aide de Von V et Johannes, UN GRAND MERCI à VOUS les GARS !!!!

J'ai essayé de faire une boucle foreach, à l'intérieur d'une boucle foreach dans mon index pour afficher mes produits dans un accordéon. Permettez-moi de vous montrer comment je suis en train de le faire.

Voici mes modèles :

public class Product
{
    [Key]
    public int ID { get; set; }

    public int CategoryID { get; set; }

    public string Title { get; set; }

    public string Description { get; set; }

    public string Path { get; set; }

    public virtual Category Category { get; set; }
}

public class Category
{
    [Key]
    public int CategoryID { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

C'est un un seul une relation, Un produit a une seule catégorie, mais une catégorie a de nombreux produits.

Voici ce que j'essaie de faire de mon point de vue :

@model IEnumerable<MyPersonalProject.Models.Product>   

    <div id="accordion1" style="text-align:justify">
    @foreach (var category in ViewBag.Categories)
    {
        <h3><u>@category.Name</u></h3>

        <div>

            @foreach (var product in Model)
            {
                if (product.CategoryID == category.CategoryID)
                {
                    <table cellpadding="5" cellspacing"5" style="border:1px solid black; width:100%;background-color:White;">
                        <thead>
                            <tr>
                                <th style="background-color:black; color:white;">
                                    @product.Title  
                                    @if (System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal("/admin", User, "GET"))
                                    {
                                        @Html.Raw(" - ")  
                                        @Html.ActionLink("Edit", "Edit", new { id = product.ID }, new { style = "background-color:black; color:white !important;" })
                                    }
                                </th>
                            </tr>
                        </thead>

                        <tbody>
                            <tr>
                                <td style="background-color:White;">
                                    @product.Description
                                </td>
                            </tr>
                        </tbody>      
                    </table>                       
                }
            }

        </div>
    }  
</div>

Je ne suis pas tout à fait sûr que ce est la bonne façon de le faire, mais c'est à peu près ce que je suis en train de faire. Foreach catégories, mettre tous les produits de cette catégories à l'intérieur d'un accordéon onglet.

  • catégorie 1
    • produit 1
    • produit 3
  • de catégorie 2
    • produit 2
    • produit 4
  • catégorie 3
    • produit 5

Ici, je vais ajouter ma cartographie de ma un grand nombre (Merci Brian P) la relation :

public class MyPersonalProjectContext : DbContext
{
    public DbSet<Product> Product { get; set; }
    public DbSet<Category> Category { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<Product>();
        modelBuilder.Entity<Category>();
    }
}

Je vais aussi ajouter mon contrôleur de sorte que vous pouvez voir comment j'ai fait :

public ActionResult Index()
    {
        ViewBag.Categories = db.Category.OrderBy(c => c.Name).ToList();
        return View(db.Product.Include(c => c.Category).ToList());
    }

BIG EDIT : j'ai édité mon post avec la réponse que j'ai trouvé avec l'aide de Von V et Johannes, UN GRAND MERCI à VOUS les GARS !!!!

Si il y a une relation, pourquoi avez-vous une ICollection<Catégorie> dans la classe de Produit? Qu'est-ce que votre contrôleur de l'action? Qu'est-ce que le modèle adopté pour la vue?
La raison pour laquelle j'ai une ICollection<Catégorie> est parce que parfois, j'ai besoin d'obtenir le CatogoryID ou le Nom de ce Modèle. Comme ici, je veux afficher le nom de la catégorie sur mon accordéon <h3>. Ne suis-je pas en train de faire ?
Votre relation n'est PAS de 1-1, c'est plusieurs-1, vous avez juste à penser à l'envers. 1 catégorie a de nombreux produits.
Je pense que vous avez raison... je si à ce sujet à l'envers. Maintenant, il serait logique que la raison pour laquelle je ne suis pas capable de ça

OriginalL'auteur Guillaume Longtin | 2013-04-12