1

我正在使用 webgrid 来显示记录列表。

我的观点与 IEnumerable 紧密结合。

@model IEnumerable<Models.SitesConfig.Configuration>

我正在将 webgrid 与模型绑定。

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

我正在尝试使用@helper 方法格式化列。@helper 方法采用 Models.SitesConfig.Configuration 类型的参数。

当我尝试加载视图时,我收到无效参数错误。

这是我的看法。

    @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

formatlambda 中,item参数是WebGridRow类的一个实例(以 的形式dynamic),其中Value属性保存实际项目。

所以你需要写:

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

SideNote 如果你不想输出 html,你需要使用Html.Rawhelper。因此,将您的助手修改为:

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