令人惊讶的是,我一直在互联网上搜索如何从最近3个小时的数据源复杂类型绑定webgrid列。但我找不到任何有用的信息。 Complex WebGrid Binding in MVC 3上有一个主题,但它在我的方案中不起作用。
为了简化它,假设我有一个Employee对象列表,我填充了WebGrid,每个Employee都有Address属性,它是Address类型。
我想在WebGrid中显示Address字段的City属性以及Employee的其他字段。
我认为grid.Column(“Address.City”)可以工作,但事实并非如此。这是不支持的,或者我做错了什么。
感谢您的帮助。
此致
AnarchistGeek
答案 0 :(得分:1)
我无法看到你的答案是如何解决这个问题的,直到我意识到我缺少的是有时属性可以为null而不是空引用错误你得到错误列“Address.City”不存在。除非您在格式属性.... I found the the answer here
中检查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")))
答案 1 :(得分: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")))
我希望它可以帮助别人。
干杯。