【问题标题】:How to pass one column of data as a list using viewbag to a strongly typed view如何使用 viewbag 将一列数据作为列表传递给强类型视图
【发布时间】:2011-05-06 13:05:37
【问题描述】:

谁能指出我正确的方向,如何使用 viewbag 将列表中的一列数据传递给强类型视图。我正在使用强类型视图传递 CustomerSites 列表。我还想在列表中的每个 CustomerSite 旁边显示一个 CustomerName。

我尝试了以下方法,但是由于控制器正在返回客户列表,它不允许我从视图中访问 CustomerName 属性,是否可以从视图中访问此属性?

public ViewResult Index()
    {
        var q = from a in db.Customers.ToList()
        select a;
        ViewBag.customer = q;
        return View(db.CustomerSites.ToList());
    }

@model IEnumerable<trsDatabase.Models.CustomerSite>
@foreach (var customer in Model)
{
<tr>
 <td>
        @ViewBag.customer.CustomerName
   </td>
   <td>
        @customer.UnitNo
    </td>
    <td>
        @Truncate(customer.StreetName, 25)
    </td>
    <td>
        @customer.Town
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=customer.Id }) |
        @Html.ActionLink("Details", "Details", new { id=customer.Id }) |
        @Html.ActionLink("Delete", "Delete", new { id=customer.Id })
    </td>
</tr>
}

【问题讨论】:

  • 为什么同一个问题你问了两次,而第一次得到了正确答案? stackoverflow.com/questions/5910767/…
  • @DanielB 因为虽然答案是正确的,但它没有提供问题的答案,我仍然无法解决问题
  • 看我的回答。您必须通过指定 where 子句来选择您想要的单个客户。您想展示哪个客户?一个具体的?所以你必须选择一个。
  • @DanielB 我想显示列表中包含的每个客户地址的所有客户名称,所以我有一个从一个数据库表在视图中生成的客户站点列表,然后我想要一个另一个数据库表中每个站点的对应名称列表,因此实际上是两个列表。
  • @DanielB 实际上是由两个数据库对象组成的一个列表。

标签: asp.net-mvc view viewbag


【解决方案1】:

我鼓励您将由 CustomerSites 和 CustomerNames 构建的 ViewModel 传递给 View。为什么不从由客户名称和站点组成的数据库对象中获取?

【讨论】:

    【解决方案2】:

    在我看来,ViewBag.customer 拥有 Customers 的集合,而不是单个 Customer 对象。在您的查询中,您应该有一个 where 部分。

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多