我尝试在Webgrid中显示列表,但是视图只显示一列,无论我做什么,我似乎无法显示其他列(我的模型有3列)属性和其中一个是复杂的,包含4个属性,所以我希望6列)。
查看:
@model IEnumerable<AIM.Police.DB.Factor>
@using AIM.Police.DB
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="float-right">
@{
var grid = new WebGrid(Model);
}
@grid.GetHtml()
</div>
到视图我传递一个因子列表,定义为:
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; }
}
FactorTypesEnum和TraitVector定义为:
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; }
}
最后,这是Controller最简单的Index动作:
public ActionResult Index(int? id)
{
return View(db.Factors.ToList());
}
Model包含预期的47行Factor对象,包括为Factor(FactorType,ID和TraitVector)定义的所有属性,从DB表中读取并由Action传递给View,但是在生成的Html中只有ID列出现。
值得注意的是,模型Factor在一个单独的DLL中定义,而在DB中,所有数据字段都有值(无空值)。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
您需要定义列。像这样:
<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>
有关详细信息,请参阅http://www.codeproject.com/Tips/615776/WebGrid-in-ASP-NET-MVC4。
答案 1 :(得分:0)
要回答我自己的问题,将数据显式绑定到网格的工作是什么,如下所示:
grid.Bind(Model.Factors, new[] { "FactorType", "ID",
"TraitVector.AttentionState", "TraitVector.AffectState",
"TraitVector.AttitudeState", "TraitVector.AffiliationState"});
由于这个显式绑定在过去我没有必要在MVC webgrid中显示其他模型,我只能假设这与FactorType
是枚举类型和/或{{}有关。 1}}是一个复杂的类型,并且webgrid无法自动绑定这些字段,因为它正在为“更简单”的类型做