WebGrid数据显示在第一列内

时间:2013-06-26 21:14:41

标签: asp.net-mvc asp.net-mvc-4 razor webgrid

在我的ASP.NET MVC应用程序中,我有一个部分视图,可以呈现一个表格。

简而言之,我的问题是WebGrid数据源中每个对象的所有属性的所有值都显示在表的第一列内,而不是每列的属性值。我可以在托管它们的每个第一列单元格中看到每个属性的单元格边框。

部分视图的模型为List<ReportTableEntry>,其中ReportTableEntry为:

public class ReportTableEntry
{
    public DateTime Time             { get; set; }
    public int      OpenedSessions   { get; set; }
    public int      ClosedSessions   { get; set; }
    public int      SnapshotSessions { get; set; }
    public int      TotalSessions    { get; set; }
}

呈现局部视图的视图调用

@Html.Partial("Table", Model.TableEntries)

(此处模型是指父视图的模型而不是局部视图的模型),其中Model.TableEntries 一个List,而在局部视图中,Model的内容似乎是有效的我检查一下。

我已经尝试过我能想到的每一种组合:

  • 我直接使用了父视图的模型并使用source:Model.TableEntries创建了WebGrid。
  • 我尝试在局部视图中使用非类型模型。
  • 我指定了网格的列名,并使用了默认值。
  • 我尝试使用ColumnAttribute装饰ReportTableEntry的属性。
  • 我使用带有和不带样式的grid.Html,有和没有列参数
  • 我切换了分页,排序并添加/删除了ajaxUpdateContainerId

尽管如此,所有ReportTableEntry的属性值都塞满了第一个表列。

我注意到的一件事是grid.Columns()返回一个空数组。

为了完整起见,这是产生这些不良结果的最简单的变体:

@model List<ReportTableEntry>

<div id="reportDataDiv">
@{
    if (Model == null)
    {
        <p>No data to show</p>
    }
    else
    {
        var grid = new WebGrid(source:                Model, 
                               columnNames:           null, 
                               defaultSort:           "", 
                               rowsPerPage:           100, 
                               canPage:               true, 
                               canSort:               false, 
                               ajaxUpdateContainerId: "reportDataDiv");

        @grid.GetHtml()
    }
}
</div>

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

多么愚蠢... site.css,td元素,浮动:左 - 这就是发生的事情。