Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 WebGrid中的复杂类型_Asp.net Mvc 3_Razor_Webgrid - Fatal编程技术网

Asp.net mvc 3 WebGrid中的复杂类型

Asp.net mvc 3 WebGrid中的复杂类型,asp.net-mvc-3,razor,webgrid,Asp.net Mvc 3,Razor,Webgrid,令人惊讶的是,我最近3个小时一直在互联网上搜索如何从作为数据源的复杂类型绑定webgrid列。但我找不到任何有用的信息。 有一个主题,但它在我的场景中不起作用 为了简化它,假设我有一个填充WebGrid的Employee对象列表,每个Employee都有Address属性,即Address类型 我想在WebGrid中显示Address字段的City属性以及Employee的其他字段 我假设grid.Column(“Address.City”)可以工作,但事实并非如此。这是不受支持的,还是我做错了

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

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

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

我假设grid.Column(“Address.City”)可以工作,但事实并非如此。这是不受支持的,还是我做错了什么

谢谢你的帮助

问候


无政府主义极客

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

线程链接是

并且该解决方案是(经过测试的):

@函数{
公营雇员
{
公共字符串名称{get;set;}
公共广播地址{get;set;}
}
公共课堂演讲
{
公共字符串City{get;set;}
}
}
@{
var myClasses=新列表{
新员工{Name=“A”,地址=新地址{City=“AA”},
新员工{Name=“B”,地址=新地址{City=“BB”},
新员工{Name=“C”,Address=新地址{City=“CC”},
新员工{Name=“D”,地址=新地址{City=“DD”},
};
var grid=新的WebGrid(来源:myClasses);
}
@grid.GetHtml(
列:grid.columns(grid.Column(“Address.City”,标题:“City”),grid.Column(“Name”))
我希望它能帮助别人


干杯。

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

线程链接是

并且该解决方案是(经过测试的):

@函数{
公营雇员
{
公共字符串名称{get;set;}
公共广播地址{get;set;}
}
公共课堂演讲
{
公共字符串City{get;set;}
}
}
@{
var myClasses=新列表{
新员工{Name=“A”,地址=新地址{City=“AA”},
新员工{Name=“B”,地址=新地址{City=“BB”},
新员工{Name=“C”,Address=新地址{City=“CC”},
新员工{Name=“D”,地址=新地址{City=“DD”},
};
var grid=新的WebGrid(来源:myClasses);
}
@grid.GetHtml(
列:grid.columns(grid.Column(“Address.City”,标题:“City”),grid.Column(“Name”))
我希望它能帮助别人


干杯。

我不知道你的答案是如何解决问题的,直到我意识到我缺少的是,有时属性可以为null,但不是null引用错误,而是错误列“Address.City”不存在。除非您在format属性中检查null

@函数{
公营雇员
{
公共字符串名称{get;set;}
公共广播地址{get;set;}
}
公共课堂演讲
{
公共字符串City{get;set;}
}
}
@{
var myClasses=新列表{
新员工{Name=“A”,地址=新地址{City=“AA”},
新员工{Name=“B”,地址=新地址{City=“BB”},
新员工{Name=“C”,地址=新地址{City=null},
新员工{Name=“D”,地址=null},
};
var grid=新的WebGrid(来源:myClasses);
}
@grid.GetHtml(
columns:grid.columns(grid.Column(“Address.City”),
标题:“城市”,
格式:@@if(item.Address!=null)
{@item.Address.City}
), 
grid.Column(“名称”))

我不知道您的答案是如何解决问题的,直到我意识到我缺少的是,有时属性可以为null,但您得到的错误列“Address.City”不存在,而不是null引用错误。除非您在format属性中检查null

@函数{
公营雇员
{
公共字符串名称{get;set;}
公共广播地址{get;set;}
}
公共课堂演讲
{
公共字符串City{get;set;}
}
}
@{
var myClasses=新列表{
新员工{Name=“A”,地址=新地址{City=“AA”},
新员工{Name=“B”,地址=新地址{City=“BB”},
新员工{Name=“C”,地址=新地址{City=null},
新员工{Name=“D”,地址=null},
};
var grid=新的WebGrid(来源:myClasses);
}
@grid.GetHtml(
columns:grid.columns(grid.Column(“Address.City”),
标题:“城市”,
格式:@@if(item.Address!=null)
{@item.Address.City}
), 
grid.Column(“名称”))
@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")))
@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")))