1

令人惊讶的是,我一直在互联网上搜索如何从过去 3 小时的数据源的复杂类型中绑定 webgrid 列。但我找不到任何有用的信息。MVC 3 中有一个关于复杂 WebGrid 绑定的主题,但它在我的场景中不起作用。

为了简化它,假设我有一个 Employee 对象列表,我从中填充 WebGrid,每个 Employee 都有 Address 类型的 Address 属性。

我想在 WebGrid 中显示 Address 字段的 City 属性以及 Employee 的其他字段。

我认为 grid.Column("Address.City") 会起作用,但事实并非如此。这是不支持的东西,还是我做错了什么。

谢谢你的帮助。

问候

无政府主义者极客

4

2 回答 2

1

在我意识到我缺少的是有时该属性可以为空但不是空引用错误而不是空引用错误之前,我无法看到您的答案是如何解决问题的,而是出现错误列“Address.City”不存在。除非您在格式属性中检查 null ......我在这里找到了答案

@functions{
        public class Employee
        {
            public string Name { get; set; }
            public Address Address { get; set; }
        }
        public class Address
        {
            public string City { get; set; }
        }
    }
    @{
        var myClasses = new List<Employee>{
              new Employee   { Name="A" , Address = new Address{ City="AA" }},
              new Employee   { Name="B" , Address = new Address{ City="BB" }},
              new Employee   { Name="C" , Address = new Address{ City=null }},
              new Employee   { Name="D" , Address = null},
    };
        var grid = new WebGrid(source: myClasses);
    }
    @grid.GetHtml(
    columns: grid.Columns(grid.Column("Address.City",
    header: "City",
    format: @<text>@if (item.Address != null)
                   {@item.Address.City}
    </text>), 
    grid.Column("Name")))
于 2013-03-15T13:49:44.633 回答
0

这是我在 ASP.NET 论坛上得到的答案,我想在这里发布它以防其他人需要。

线程链接是http://forums.asp.net/p/1718114/4586676.aspx/1?Re%20Complex%20data%20type%20in%20WebGrid

解决方案是(已测试):

@functions{
    public class Employee
    {
        public string Name { get; set; }
        public Address Address { get; set; }
    }
    public class Address
    {
        public string City { get; set; }
    }
}
@{
    var myClasses = new List<Employee>{
          new Employee   { Name="A" , Address = new Address{ City="AA" }},
          new Employee   { Name="B" , Address = new Address{ City="BB" }},
          new Employee   { Name="C" , Address = new Address{ City="CC" }},
          new Employee   { Name="D" , Address = new Address{ City="DD" }},
};
    var grid = new WebGrid(source: myClasses);
}
@grid.GetHtml(
columns: grid.Columns(grid.Column("Address.City",header:"City"), grid.Column("Name")))

我希望它可以帮助其他人。

干杯。

于 2011-09-12T12:07:14.387 回答