【问题标题】:Passing parameterized list to view in MVC using Entity Framework使用实体框架传递参数化列表以在 MVC 中查看
【发布时间】:2009-12-31 13:04:43
【问题描述】:

在一个 MVC 项目中,我试图创建一个视图,该视图具有父表中的标题以及其相关子表中的后续列表。

我使用实体框架将表拉入项目,并在控制器命名空间中创建了以下视图模型:

public class ServicesViewModel
{
    public ServicesViewModel(List<ServiceGroup> servicegroups, List<Service> services)
    {
        this.ServiceGroups = servicegroups;
        this.Service = services;
    }

    public List<ServiceGroup> ServiceGroups { get; set; }
    public List<Service> Service { get; set; }

}

然后在控制器 Actionresult 中我这样做了:

    public ActionResult Index()
    {

        var servicegroups = _db.ServiceGroupSet.ToList();
        var services = _db.ServiceSet.ToList();

        return View(new ServicesViewModel(servicegroups,services));
    }

..在视图中这样做了:

" %>

其他html代码等。

<% foreach (var m in Model.ServiceGroups) { %>

    <strong><ul> <%= m.ServiceGroupName %></ul></strong>

<% foreach (var item in Model.Service) { %>

    <li> <%= item.ServiceDescription %></li>

<% } %>


<% } %>

一切正常,但运行每个父记录的所有子记录。我还没有想出如何将过滤的参数放入视图中。

我在控制器中尝试了 linq 查询,但似乎无法在智能感知中找到外键字段。

【问题讨论】:

    标签: asp.net asp.net-mvc entity-framework view controller


    【解决方案1】:

    嗯.. 如果它是 Master-Detail 2 表,并且您想要一个单独的视图模型,我建议您将您定义为 ServiceGroup + List,然后将其列表传递给查看。

    但如果您的服务和服务组确实有自己的导航属性(EF 或 LINQ2SQL)。 您可以只传递 ServiceGroups 来查看,然后使用导航属性 ServiceGroup.Services 来枚举详细信息。

    <% foreach (var m in Model.ServiceGroups) { %>
    
        <strong><ul> <%= m.ServiceGroupName %></ul></strong>
    
    **<% foreach (var item in m.Services) { %>**
    
        <li> <%= item.ServiceDescription %></li>
    
    <% } %>
    
    
    <% } %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多