非因子MVC Grid Ternary运算符失败

时间:2018-05-22 06:23:58

标签: c# asp.net-core-mvc webgrid

我正在使用伟大的NonFactor MVC Grid取得了相当大的成功,但我看到了一个奇怪的问题:

@(Html
    .Grid(items)
    .Build(columns =>
    {
        columns.Add(model => model.Type).Formatted("{0}" == "folder" ? "<span class=\"glyphicon glyphicon-folder-open\"></span>" : "<span class=\"glyphicon glyphicon-file\"></span>").Encoded(false);
        columns.Add(model => model.Id).Titled("Id");
        columns.Add(model => model.Name).Titled("Name");
        columns.Add(model => model.Size).Titled("Size");
    })
    .Empty("No data found")
    .Sortable()
)

此处,如果行的属性Type等于folder,则应显示该列中的文件夹图标。但是,我发现第二个选项始终用于Formatted列。

因此,如果我为该三元运算符切换选项,则始终显示文件夹图标,此时始终显示文件图标。

有谁知道为什么会这样,如果有办法克服这个问题?

1 个答案:

答案 0 :(得分:0)

我最后只是这样做了

@(Html
    .Grid(items)
    .Build(columns =>
    {
        columns.Add(model => model.Type).Formatted("<span class=\"glyphicon glyphicon-{0}-open\"></span>").Encoded(false);
        columns.Add(model => model.Type).Titled("Type").Css("hidden");
        columns.Add(model => model.Id).Titled("Id");
        columns.Add(model => model.Name).Titled("Name");
        columns.Add(model => model.ModifiedDate).Titled("Modified");
        columns.Add(model => model.longSize).RenderedAs(model => model.Size).Titled("Size");
        // columns.Add(model => model.mbSize).Titled("Size (MB)");
    })
    .Empty("No data found")
    .Sortable()
    .RowCss(model => "rowStyle")
)

所以行

columns.Add(model => model.Type).Formatted("<span class=\"glyphicon glyphicon-{0}-open\"></span>").Encoded(false);

如果是文件夹,则显示文件夹图标,如果是文件,则显示任何内容(因为glyphicon-file-open不是有效的图标类)

不是最好的解决方案,因为现在没有文件图标,但它足够好。