2013-09-16 56 views
0

我嘗試在Webgrid中顯示列表,但該視圖只顯示一列並且不管我做了什麼我似乎無法讓它顯示其他列(我的模型有3個屬性,其中一個是複雜的,包含4個屬性,所以我期望6列)。MVC Webgrid只顯示1個模型列

查看:

@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; } 
} 

最後這裏是控制器最簡單的索引操作:

public ActionResult Index(int? id) 
    { 
     return View(db.Factors.ToList()); 
    } 

該模型包含預期的47行因子對象,包括從因子(因子類型,ID和TraitVector)中定義的所有屬性,從數據庫表中讀取並由動作傳遞給視圖,但僅在生成的Html中出現ID列。

可能值得注意的是,模型Factor在單獨的DLL中定義,並且在DB中所有數據字段都有值(無空值)。

任何人都可以爲我解決這個問題嗎?

回答

0

要回答我的問題,是什麼做的工作是對數據明確地綁定到網格,像這樣:

grid.Bind(Model.Factors, new[] { "FactorType", "ID", 
         "TraitVector.AttentionState", "TraitVector.AffectState", 
         "TraitVector.AttitudeState", "TraitVector.AffiliationState"}); 

由於這個明確的約束是沒有必要的時候過去我顯示在其他車型MVC webgrid,我只能假設這與是枚舉類型和/或TraitVector是一個複雜類型有關,並且webgrid不能自動綁定這些字段,因爲它爲「更簡單」的類型所做的工作

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