assando vários conjuntos de resultados para uma exibição de um controlador no ASP.NET MV
ntão, eu tenho um controlador configurado da seguinte maneira:
using NonStockSystem.Models;
namespace NonStockSystem.Controllers
{
[Authorize(Users = "DOMAIN\\rburke")]
public class AdminController : Controller
{
private NonStockSystemDataContext db = new NonStockSystemDataContext();
public ActionResult Index()
{
var enumProducts = from p in db.Products select p;
ViewData["Title"] = "Administration";
return View(enumProducts.ToList());
}
}
}
A visualização Índice no controlador Admin apenas lista os produtos no sistema e nos permite clicar em um produto para visualizá-lo / editá-lo / excluí-lo. Realmente simples. No entanto, cada produto possui um CategoryID que nos diz em qual categoria ele está armazenado em uma tabela separad
visão atual (muito simplificada) é a seguinte:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="NonStockSystem.Views.Home.Admin" %>
<%@ Import Namespace="NonStockSystem.Models" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<%
foreach (Product p in (IEnumerable)ViewData.Model)
{ %>
<%=p.Name.ToString() %> (<a href="/Admin/Edit/<%=p.ID.ToString() %>">Edit</a> - <a href="/Admin/Delete/<%=p.ID.ToString() %>">Delete</a>)<br />
<%
} %>
</asp:Content>
Isso está bom no momento, pois existem apenas 10 ou 15 produtos no sistema enquanto eu o desenvolvo e testo; no entanto, uma vez implantado, haverá aprox. 300 produtos no banco de dados. Eu estou bem em exibi-los todos em uma página, no entanto, eu gostaria de usar os links (a href = "# category") da mesma forma que a Wikipedia o faz na parte superior da página, posso ter a lista de categorias e quando você clica em um leva você para a seção apropriada da página. Então, minha opinião nesse caso será assim:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="NonStockSystem.Views.Home.Admin" %>
<%@ Import Namespace="NonStockSystem.Models" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<ul>
<%
foreach (Category c in (IEnumerable)ViewData.Model)
{ %>
<li><a href="#<%=c.Name.ToString() %>"><%=c.Name.ToString() %></a></li>
<%
} %>
</ul>
<hr />
<%
foreach (Category c in (IEnumerable)ViewData.Model)
{ %>
<% // Display the category name above all products from that category %>
<h2><a name="<%=c.Name.ToString() %>"><%=c.Name.ToString() %></a></h2>
<% // Need to limit the following foreach to grab only products in this category
foreach (Product p in (IEnumerable)ViewData.Model)
{ %>
<%=p.Name.ToString() %> (<a href="/Admin/Edit/<%=p.ID.ToString() %>">Edit</a> - <a href="/Admin/Delete/<%=p.ID.ToString() %>">Delete</a>)<br />
<%
} %>
} %>
</asp:Content>
Em primeiro lugar, não tenho certeza absoluta de que essa é a maneira "certa" de fazer isso, então estou definitivamente aberto a sugestões de uma maneira diferente de fazer as coisas, mas se esse for o caminho a seguir, preciso saber como ( 1) passe dois conjuntos de resultados para a visualização (Produtos e Categorias) e (2) faça um loop por um subconjunto dos Produtos em cada loop foreach, capturando apenas os da categoria apropriada?
Felicidades