【问题标题】:MVC View - how to display the "category" of objects collection, not just the objects themselvesMVC View - 如何显示对象集合的“类别”,而不仅仅是对象本身
【发布时间】:2010-10-28 06:20:14
【问题描述】:

使用 ASP MVC 和实体框架。在视图中,您有一个页面声明,指定此视图的模型将是一个实现 IEnumerable 的集合。假设集合包含 Car 对象,这些对象仅来自 Ford(Ford 是类别)。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<detelete.Models.Car>>" %>

此福特汽车列表仅通过 LINQ to Entities 查询生成。 EF 对象 thingee 知道 Cars 与 Manufacturers 的关系(我称之为类别)

            var dat = ent.CarSet.Where(m => m.Manufacturer.Name == nm);

        List<Car> cars = dat.ToList<Car>();
        return View("ListingByManufacturer", cars);

因此,在视图中,我显示了所有福特汽车的列表。我有正确显示所有汽车属性的视图,但没有办法显示 汽车来自哪个类别(在此示例中为制造商)。我看过一些 EF/MVC 示例,它们有两个 foreach 循环,最上面的一个显示了制造商——但感觉很糟糕。

看起来应该很简单,但我卡住了......

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案1】:

    您可以通过控制器中的ViewData 传递制造商名称:

    ViewData["Manufacturer"] = nm;
    

    或者使用另一个对象作为模型,同时包含汽车和制造商名称

    public class CategoryViewModel {
         public string ManufacturerName { get; set; }
         public List<Car> Cars { get; set; }
    }
    

    并将该类的实例传递给视图。

    【讨论】:

    • 我更喜欢模型选项,而不是用不必要的字符串混淆 ViewData。这将是一个“ViewModel”。它们与您的实际数据模型分离,仅用于为您的视图提供方便。
    • 视图模型。这看起来非常适合这个问题。我一直在告诉自己,'一旦你掌握了 asp.net mvc,你就需要研究当前关于 Views 和 ViewModels 的战争'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2021-05-30
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多