ASP.NET MVC 4 用のページネーション リピーターを作成しました。これには、レンダリングするヘッダー、フッター、本文、および区切りセクションの引数を受け取る render メソッドがあります (読みやすくするために大幅に簡略化されています)。
public IHtmlString Render(Func<TViewModel, object> header, Func<TViewModel, object> body, Func<TViewModel, object> footer)
{
var sb = new StringBuilder();
// Code to render including calling the parameter objects, something like this:
sb.Append(header(null));
foreach (var item in items)
sb.Append(body(item));
sb.Append(footer(null));
return new HtmlString(sb.ToString());
}
ここで、このメソッドを Razor テンプレートで使用し、実際のテンプレート パーツをパラメーターとして含めたいと考えています。これは、純粋なラムダ式またはワンライナーのみをテンプレートとして使用する、次のようなシナリオでうまく機能します。
@Model.Render(body:
item => Html.Partial("InvoiceListView", item)
, separator:
@<hr />
)
ただし、テーブルを構築してデータを入力するなど、より複雑なことをしたい場合は、これらの複数行のテンプレートをパラメーターとして送信したいことを Razor に認識させることができません。
私はおそらくこれがうまくいくと思いました:
@Model.Render(body: item =>
@<text>
<tr>
<td>
@item.ArticleNr
</td>
</tr>
</text>
);
しかし、そこには運がありません。誰にも何か提案がありますか?それとも、私は運が悪かったのですか? Razor でこのようなリピーターを作成することは不可能ですか?