1

レコードのリストを表示するために webgrid を使用しています。

私の見解は IEnumerable と密接に結びついています。

@model IEnumerable<Models.SitesConfig.Configuration>

モデルでwebgridをバインドしています。

var grid = new WebGrid(Model, rowsPerPage: 50);

@helper メソッドを使用して列をフォーマットしようとしています。Models.SitesConfig.Configuration 型のパラメーターを受け取る @helper メソッド。

ビューを読み込もうとすると、無効な引数エラーが発生します。

これが私の見解です。

    @model IEnumerable<Models.SitesConfig.SiteConfiguration>
@section Styles {
    <link href="@Url.Content("~/Content/SatelliteSite.css")" rel="stylesheet" type="text/css" />
}

@{
    ViewBag.Title = "List of Satellite Sites";
}
@helper FormatTemplateColors(Models.SitesConfig.SiteConfiguration item)
{
    @String.Format(
        "Border: {0} <br/>Link: {1} <br/>Text: {2}",
        item.BorderColor != null ? item.BorderColor.Name : string.Empty,
        item.LinkColor != null ? item.LinkColor.Name : string.Empty,
        item.TextColor != null ? item.TextColor.Name : string.Empty)
}
@{
    var grid = new WebGrid(Model, rowsPerPage: 50);
}
<div>
    @grid.GetHtml(columns: grid.Columns(
        grid.Column("Template", 
            style: "color-column-width", 
            format:(item) => @FormatTemplateColors(item)
        )
         )
</div>

誰かがこれについて私を助けることができますか?

4

1 に答える 1

3

formatラムダでは、パラメーターitemWebGridRowクラスのインスタンス(の形式dynamic)であり、Valueプロパティは実際のアイテムを保持します。

したがって、次のように書く必要があります。

format:(item) => @FormatTemplateColors(item.Value)

SideNote htmlを出力したくない場合は、Html.Rawヘルパーを使用する必要があります。したがって、ヘルパーを次のように変更します。

@helper FormatTemplateColors(Models.SitesConfig.SiteConfiguration item)
{
    @Html.Raw(String.Format(...
}
于 2012-09-06T11:43:34.597 に答える