J'ai un problème avec une vue MVC que je n'arrive pas à résoudre. C'est ici.Pouvez-vous nous aider avec ce problème MVC ViewModel?
1) J'ai une vue d'index qui affiche une liste de détaillants avec des données de la table des détaillants. Jusqu'ici tout va bien.
2) Je veux aussi inclure les catégories de détaillants pour chaque détaillant qui sont stockés dans une table RetailersCategories où chaque détaillant peut avoir plusieurs catégories
J'ai essayé quelques petites choses, mais ne peut pas sembler faire ce travail. Le plus proche je suis venu à ce que je voulais utiliser un modèle de vue. J'ai inclus le code ci-dessous.
En fait, je récupère les bonnes données, mais je reçois tous les enregistrements des détaillants, puis tous les enregistrements de catégories.
Ce dont j'ai besoin, c'est d'un enregistrement détaillant à la fois avec toutes les catégories qui se rapportent à ce détaillant. Est-ce que n'importe qui peut me montrer comment je peux réaliser ceci?
//Controller
public ActionResult Index(int? page, int country)
{
var viewdata = new retailersIndexViewModel(_retailerRepository.GetAllRetailersByCountry(country), _retailerRepository.GetRetailerCategories());
return View(viewdata);
}
// ViewModel
public class RetailersIndexViewModel
{
public IEnumerable<RetailersShipping> RetailerShipping { get; set; }
public IEnumerable<RetailersCategory> RetailerCategories { get; set; }
public RetailersIndexViewModel(IEnumerable<RetailersShipping> retailer, IEnumerable<RetailersCategory> retailercategory)
{
this.RetailerShipping = retailer;
this.RetailerCategories = retailercategory;
}
}
//IndexView
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Inner.Master" Inherits="System.Web.Mvc.ViewPage<RetailersIndexViewModel>" %>
<% Html.RenderPartial("RetailerSummaryPartial", this.ViewData.Model.RetailerShipping); %>
<div id="retailer_index_categories">
<%
foreach (RetailersCategory category in ViewData.Model.RetailerCategories)
{%>
<% Html.RenderPartial("RetailerCategoryPartial", category); %>
<% } %>
// RetailerSummaryPartial
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<RetailersShipping>>" %>
<div id="retailer_partial_summary">
<% foreach (var retailer in Model)
{ %>
<div id="retailer_index_image">
<img src="<%=Html.Encode(retailer.Retailer.Country.Image) %>" title="<%= Html.Encode(retailer.Retailer.Name) %>>" alt="<%= Html.Encode(retailer.Retailer.Name) %>" class="main-image" />
<br />
</div>
<div id="retailer_index_logo">
<img src="<%=Html.Encode(retailer.Retailer.Logo) %>" title="<%= Html.Encode(retailer.Retailer.Name) %>>" alt="<%= Html.Encode(retailer.Retailer.Name) %>" class="main-image" />
</div>
<div id="retailer_index_name_comment">
<%= Html.Encode(retailer.Retailer.Name)%><br />
<span><%if (retailer.Retailer.CountryId == retailer.Retailer.CountryId) %>
<%= Html.Encode(retailer.Retailer.LocalComment)%>
<%= Html.Encode(retailer.Retailer.IntComment)%>
</span>
</div>
<% } %>
</div>
//RetailerCategoryPartial
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<RetailersCategory>" %>
<div id="retailer_index_categories">
<%= Html.Encode(Model.Category.CategoryName) %>
</div>
Êtes-vous par hasard en utilisant Entity Framework 4? – gligoran
linq to sql actuellement – Cunners
Vous recherchez des conseils sur la façon de structurer votre ViewModel ou comment le hacher avec le modèle de vue actuel? Idéalement, vous auriez simplement une liste de catégories sur chaque détaillant ... au lieu d'essayer de rejoindre les catégories dans la vue ... – dotjoe