在我的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 指的是父视图的模型而不是局部视图的模型),其中 Model.TableEntries是一个列表,在局部视图中,当我检查模型时,它的内容似乎是有效的。
我已经尝试了所有我能想到的组合:
- 我直接使用了父视图的模型,并使用源: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>
我在这里想念什么?