Webgrid にリストを表示しようとしましたが、ビューには 1 つの列しか表示されず、何をしても他の列を表示できないようです (私のモデルには 3 つのプロパティがあり、そのうちの 1 つは複雑で 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>
View には、Factor のリストを次のように定義して渡します。
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; }
}
最後に、コントローラーの最も単純な Index アクションを次に示します。
public ActionResult Index(int? id)
{
return View(db.Factors.ToList());
}
Model には、Factor に定義されたすべてのプロパティ (FactorType、ID、および TraitVector) を含む、予想される 47 行の Factor オブジェクトが含まれます。これは、DB テーブルから読み取られ、アクションによってビューに渡されますが、生成された Html には ID 列のみが表示されます。
モデルである Factor が別の DLL で定義されていること、および DB ではすべてのデータ フィールドに値がある (null ではない) ことに注意してください。
誰でも私のためにこれを理解できますか?