0

したがって、次のようにコントローラーを設定しました。

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());
        }
    }
}

管理コントローラのインデックス ビューには、システム内の製品が一覧表示されるだけで、製品をクリックして表示、編集、削除することができます。本当に簡単です。ただし、各製品には、別のテーブルに格納されているカテゴリを示す CategoryID があります。

(非常に単純化された)現在のビューは次のとおりです。

<%@ 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>

開発とテストを行っている間、システムには 10 または 15 の製品しかないため、現時点ではこれで問題ありません。データベース内の 300 製品。すべてを 1 ページに表示するのは問題ありませんが、ウィキペディアのように (a href="#category") リンクを使用したいので、ページの上部にカテゴリのリストを表示し、クリックするとページの適切なセクションに移動します。したがって、その場合の私の見解は次のようになります。

<%@ 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>

まず、これがこれを行うための「正しい」方法であるかどうか完全には確信が持てないので、別の方法の提案を受け入れることは間違いありませんが、これが進むべき方法である場合は、次の方法を知る必要があります (1 ) 2 つの結果セット (製品とカテゴリ) をビューに渡し、(2) 各 foreach ループで製品のサブセットをループして、適切なカテゴリのものだけを取得しますか?

乾杯!

4

1 に答える 1