私の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はList であり、部分ビュー内では、Model の内容を調べると有効であるように見えます。
考えられるすべての組み合わせを試しました:
- 親ビューのモデルを直接使用し、ソース: Model.TableEntries で WebGrid を作成しました。
- 部分ビューで型付けされていないモデルを使用しようとしました。
- グリッドの列名を指定し、デフォルト値を使用しました。
- ReportTableEntry のプロパティを ColumnAttribute で装飾してみました。
- スタイルの有無にかかわらず、列パラメーターの有無にかかわらず grid.Html を使用しました
- ページング、ソートを切り替え、ajaxUpdateContainerId を追加/削除しました
それにもかかわらず、ReportTableEntry のすべてのプロパティ値は、最初のテーブル列内に詰め込まれています。
私が気づいたことの 1 つは、 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>
ここで何が欠けていますか?