Asp.net mvc 4 MVC Webgrid仅显示1个模型列

Asp.net mvc 4 MVC Webgrid仅显示1个模型列,asp.net-mvc-4,webgrid,Asp.net Mvc 4,Webgrid,我试图在Webgrid中显示一个列表,但视图只显示一列,无论我做什么,我似乎都无法让它显示其他列(我的模型有3个属性,其中一个属性很复杂,包含4个属性,所以我希望有6列) 视图: FactorTypesEnum和TraitVector的定义如下: public class Factor { public Factor() { this.TraitVector = new TraitVector(); } [Key] [Column(O

我试图在Webgrid中显示一个列表,但视图只显示一列,无论我做什么,我似乎都无法让它显示其他列(我的模型有3个属性,其中一个属性很复杂,包含4个属性,所以我希望有6列)

视图:

FactorTypesEnum和TraitVector的定义如下:

public class Factor  
{
    public Factor()
    {
        this.TraitVector = new TraitVector();
    }

    [Key]
    [Column(Order=0)]
    public FactorTypesEnum FactorType { get; set; }

    [Key]
    [Column(Order = 1)]
    public int ID { get; set; }
    public TraitVector TraitVector { get; set; }      
}
public enum FactorTypesEnum
{
    StimulusType = 1,
    OffenseType,
    InterrogationStage,
    InterrogeeStatus,
    ZoneOfRelevance,
    InterrogationExperience,
    InterrogationCount 
}

[ComplexType]
public class TraitVector
{       
    public double AttentionState { get; set; }
    public double AffectState { get; set; }
    public double AttitudeState { get; set; }
    public double AffiliationState { get; set; }
}
最后,这里是控制器最简单的索引操作:

    public ActionResult Index(int? id)
    {
        return View(db.Factors.ToList());
    }
该模型包含预期的47行Factor对象,包括为Factor定义的所有属性(FactorType、ID和TraitVector),这些属性从DB表读取并通过操作传递给视图,但是在生成的Html中仅显示ID列

值得注意的是,模型Factor是在单独的DLL中定义的,在DB中,所有数据字段都有值(无空值)


有人能帮我弄清楚吗?

您需要定义您的列。大概是这样的:

<div id="gridContent">
    @grid.GetHtml(tableStyle: "webGrid",
            headerStyle: "header",
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            columns: grid.Columns(
            grid.Column("Id", format: (item) => item.GetSelectLink(item.Id)),
            grid.Column("Name", " Name"),
            grid.Column("Description", "Description", style: "description"),
            grid.Column("Quantity", "Quantity")
     )) 
</div>
    grid.Bind(Model.Factors, new[] { "FactorType", "ID", 
                         "TraitVector.AttentionState", "TraitVector.AffectState", 
                         "TraitVector.AttitudeState", "TraitVector.AffiliationState"});

@GetHtml(表样式:“webGrid”,
headerStyle:“header”,
alternatingRowStyle:“alt”,
selectedRowStyle:“选择”,
列:grid.columns(
grid.Column(“Id”,格式:(item)=>item.GetSelectLink(item.Id)),
网格栏(“名称”、“名称”),
网格列(“说明”、“说明”,样式:“说明”),
网格栏(“数量”、“数量”)
)) 

有关更多信息,请参阅。

要回答我自己的问题,任务是将数据显式绑定到网格,如下所示:

<div id="gridContent">
    @grid.GetHtml(tableStyle: "webGrid",
            headerStyle: "header",
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            columns: grid.Columns(
            grid.Column("Id", format: (item) => item.GetSelectLink(item.Id)),
            grid.Column("Name", " Name"),
            grid.Column("Description", "Description", style: "description"),
            grid.Column("Quantity", "Quantity")
     )) 
</div>
    grid.Bind(Model.Factors, new[] { "FactorType", "ID", 
                         "TraitVector.AttentionState", "TraitVector.AffectState", 
                         "TraitVector.AttitudeState", "TraitVector.AffiliationState"});
由于在过去我在MVC webgrid中显示其他模型时不需要显式绑定,我只能假设这与
FactorType
是枚举类型和/或
TraitVector
是复杂类型有关,并且webgrid不能像对“更简单”类型那样自动绑定这些字段