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

questionAnswers(1)

yourAnswerToTheQuestion