Asp.net mvc 4 MVC Webgrid仅显示1个模型列
我试图在Webgrid中显示一个列表,但视图只显示一列,无论我做什么,我似乎都无法让它显示其他列(我的模型有3个属性,其中一个属性很复杂,包含4个属性,所以我希望有6列) 视图: FactorTypesEnum和TraitVector的定义如下: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
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不能像对“更简单”类型那样自动绑定这些字段