Je souhaite afficher une liste d'avis de parties à modifier. C'est simple à faire avec l'échafaudage intégré de VS, mais je suis confronté à des problèmes de gestion des EntityCollections associées à une entité. Ma méthode de contrôleur est actuellement:ASP.NET MVC 2 - Utilisation de EF4 avec échafaudage List
public ActionResult ShowReviews()
{
var reviews = _siteDB.Games.Include("Genre").Include("Platforms").Include("Content").ToList();
return View(reviews);
}
Comme vous pouvez le voir, Platforms est pluriel. Chaque jeu peut être sur une multitude de plateformes (PS3, XBox 360, etc.).
Je souhaite avoir les noms des plates-formes en tant que chaîne CSV dans ma liste. Je ne suis pas sûr de savoir comment le faire avec élégance car je dois d'abord percer les plates-formes, extraire leurs noms, et les ajouter à une chaîne vide. J'ai juste l'impression que j'y vais de la mauvaise façon, et l'introduction de la logique du façonnement des résultats me semble erronée. Voici ma vue telle qu'elle est maintenant. S'il vous plaît laissez-moi savoir s'il y a une meilleure façon de le faire.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<HandiGamer.Models.Game>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
ShowReviews
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>ShowReviews</h2>
<table>
<tr>
<th></th>
<th>
Game
</th>
<th>
Review Title
</th>
<th>
Genre
</th>
<th>
Platforms
</th>
<th>
Score
</th>
<th>
Last Modified
</th>
</tr>
<% foreach (var item in Model) { %>
<% var platformInfo = item.Platforms.ToList();
string platformNameList = "";
foreach (var platformName in platformInfo) {
platformNameList += platformName.Name + " ";
}
%>
<tr>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.GameID }) %> |
<%: Html.ActionLink("Details", "Details", new { id=item.GameID })%>
</td>
<td>
<%: item.GameTitle %>
</td>
<td>
<%: item.Genre.Name %>
</td>
<td>
<%: platformNameList %>
</td>
<td>
<%: item.ReviewScore %>
</td>
<td>
<%: item.Content.LastModified %>
</td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "CreateReview") %>
</p>
</asp:Content>
Merci. Je n'étais pas sûr si un modèle de vue était la voie à suivre ou non. En voyant votre code, cela semble être un choix évident. –