Asp.net mvc 3 返回ASP.NETMVC视图,但如何显示其他信息?

Asp.net mvc 3 返回ASP.NETMVC视图,但如何显示其他信息?,asp.net-mvc-3,Asp.net Mvc 3,我有一个SQL数据库,包含以下内容:客户、物品、衣服和食物 这件物品是打开衣服或食物的钥匙。 这件物品也是顾客的钥匙。因此,客户可以拥有食物或衣物 我正在使用ADO.Net实体框架,并自动生成该框架 我目前有以下设置:一个人可以在网页上输入自己的ID,这是通过一个表单发送的,控制器在表单中提取ID并使用LINQ查询数据库以获取客户。然后返回客户视图(详细信息)。我现在可以看到所有客户的详细信息等 然而,我想要的是能够看到客户拥有的物品,不同的食物和衣服,但我不确定如何做到这一点。我还希望能够允许

我有一个SQL数据库,包含以下内容:客户、物品、衣服和食物

这件物品是打开衣服或食物的钥匙。 这件物品也是顾客的钥匙。因此,客户可以拥有食物或衣物

我正在使用ADO.Net实体框架,并自动生成该框架

我目前有以下设置:一个人可以在网页上输入自己的ID,这是通过一个表单发送的,控制器在表单中提取ID并使用LINQ查询数据库以获取客户。然后返回客户视图(详细信息)。我现在可以看到所有客户的详细信息等

然而,我想要的是能够看到客户拥有的物品,不同的食物和衣服,但我不确定如何做到这一点。我还希望能够允许用户编辑衣服和食物表的一个字段。你知道我将如何实现这一点吗

以下是我的CustomerController中的ActionResult:

        public ActionResult Details(int id)
    {
        var cust = (from c in dataModel.Customers
                    where (c.MembershipID == id)
                    select c).First();
        return View(cust);
    }
我还可以编写cust.Items,它是我希望与客户一起显示在视图中的实体(他们的项目)。我如何在视图中也显示它

希望这能让我更清楚地知道我想要实现什么以及如何实现


谢谢。

通常,如果要传回不包含在一个实体中的信息,必须创建一个包含多个对象的类。因此,如果您想要一个显示客户信息及其所有项目(然后可以编辑)的页面,则需要控制器操作传回“CustomerAndItems”对象(或类似名称的对象)。此对象将包含对客户的引用以及客户项目的集合。(在操作中构建CustomerAndItems对象。)


然后,您的视图将被强类型化为CustomerAndItems,然后您可以像平常一样显示每一条信息。

使用实体框架,如果您的表使用正确的外键正确链接,那么您的客户实体应该有一个作为项集合的属性

您还可以创建自己的强类型ViewModel,该ViewModel有一个Customer字段,实现自己的衣服和食物属性,并使用另一个查询填充这些属性

昨晚有人问过这个问题,但情况类似。问题中的那个人想要信息来填充传入的下拉列表。您想要类似的东西,不是下拉列表,而是填充文本框进行编辑

要创建ViewModel,首先创建一个新类,并将其命名为CustomerAndItemsViewModel,例如

public class CustomerAndItemsViewModel
{
    public Customer Customer { get; set; }
    public IQueryable<Items> Items { get; set; }        
}


public ActionResult Details(int id)
{
    var cust = (from c in dataModel.Customers
                where (c.MembershipID == id)
                select c).First();
    var items = (from i in dataModel.Items
                where (i.MembershipID == cust.MembershipID)
                select i;
    return View(new CustomerAndItemsViewModel { Customer = cust, Items = items });
}

关于EF自动链接到项目的优点。我想他是想得到那些没有联系的信息。谢谢。如果他的表没有用正确的键设置,它可能不会被链接,所以这就是为什么我像你建议的那样链接了关于创建自定义视图模型的问题。嗨,当我进入视图时,我有以下内容:Model.Libraryitems,这是一种实体集合类型。我将如何使用它来显示所需的数据?(我想这就是你所说的链接?)谢谢。我不完全确定那个模型。图书馆项目是什么。正如我所说,如果您的表使用外键正确设置,那么您应该能够通过执行类似Customer.Items的操作来访问Customers项目,前提是该模型的类型为Customer。我想你应该用一些代码示例来编辑你的问题,至少我已经添加了ActionResult代码,并解释了我可以获取的实体等。我希望这能澄清我试图实现的目标。谢谢
@model Your.Path.To.CustomerAndItemsViewModel