使用HTML.Grid显示子对象

时间:2011-11-30 18:59:18

标签: asp.net-mvc asp.net-mvc-3 mvccontrib mvccontrib-grid

我有一个ASP.NET MVC应用程序,它使用单个视图来显示模型实体的属性和子项(及其属性)。

我的模型看起来像这样:

public class Market
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public IList<EmailAddress> EmailAddresses { get; set; }
}
public class EmailAddress 
{
    public virtual int ID { get; set; }
    public virtual int MarketID { get; set; }
    public virtual string Email { get; set; }
}

在视图中,我想使用表格来显示相关电子邮件地址的列表。为此,我使用的是Html.Grid。

<%= Html.Grid(Model.EmailAddresses).Columns( column =>
    {
        column.For(x => x.Email + Html.Hidden("ID", x.ID)).Encode(false).Sortable(false);
    })
    .Attributes(style => "width:100%")
    .Attributes(id => "emailGrid")
    .Empty("There are no Email Addresses set up") %>

但是,当我这样做时,隐藏的ID是父实体Market的ID,而不是EmailAddress的ID。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

似乎它可能是WebGrid中的一个错误。您是否尝试在EmailAddress类中重命名您的ID字段,例如EmailID并将其传递给WebGrid并查看它是否正确显示?

答案 1 :(得分:1)

这对我有用,可能是你的模型填充有问题吗?

答案 2 :(得分:1)

由于您正在为Column.For()方法使用lambda表达式,因此x参数指的是单个电子邮件。我认为您的意思是引用模型,而不是单个电子邮件ID

我认为你只需要Model.ID

,而不是做x.ID