如何使用viewbag将一列数据作为列表传递给强类型视图

时间:2011-05-06 13:05:37

标签: asp.net-mvc view viewbag

任何人都可以指出我如何使用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>
}

2 个答案:

答案 0 :(得分:1)

我建议您转到查看从CustomerSites和CustomerNames构建的ViewModel。为什么不从包含客户名称和站点的数据库对象中获取?

答案 1 :(得分:0)

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