Я хочу показать список игровых обзоров для редактирования. Это просто сделать с помощью встроенных скаффолдингов VS, но у меня возникают проблемы с обработкой связанных с EntityCollections объекта. Мой метод контроллера в настоящее время:
public ActionResult ShowReviews()
{
var reviews = _siteDB.Games.Include("Genre").Include("Platforms").Include("Content").ToList();
return View(reviews);
}
Как видите, платформы множественного числа. Каждая игра может быть на множестве платформ (PS3, XBox 360 и т. Д.).
Я бы хотел, чтобы названия платформ были в виде строки CSV в моем списке. Я просто не уверен, как это сделать элегантно, так как сначала мне нужно детализировать платформы, извлечь их имена и добавить их в пустую строку. Я просто чувствую, что поступаю неправильно, и введение логики формирования результата на мой взгляд кажется мне неправильным. Вот мой взгляд в его нынешнем виде. Пожалуйста, дайте мне знать, если есть лучший способ сделать это.
<%@ 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>