我使用webgrid来替换记录列表。
我的观点与IEnumerable紧密结合。
@model IEnumerable<Models.SitesConfig.Configuration>
我将webgrid与Model绑定。
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>
有人可以帮我解决这个问题。
答案 0 :(得分:3)
在format
lambda中,item
参数是WebGridRow类的一个实例(以dynamic
的形式),其中Value
属性包含实际项目。
所以你需要写:
format:(item) => @FormatTemplateColors(item.Value)
SideNote如果您不想输出html,则需要使用Html.Raw
助手。因此,将您的助手修改为:
@helper FormatTemplateColors(Models.SitesConfig.SiteConfiguration item)
{
@Html.Raw(String.Format(...
}