Nonfactors MVC Grid 三元运算符失败
Posted
技术标签:
【中文标题】Nonfactors MVC Grid 三元运算符失败【英文标题】:Nonfactors MVC Grid Ternary operator fails 【发布时间】:2018-10-31 19:58:51 【问题描述】:我正在使用很棒的 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】:我最终只是这样做了
@(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
不是有效的图标类)
不是最好的解决方案,因为现在没有文件图标,但它已经足够好了。
【讨论】:
以上是关于Nonfactors MVC Grid 三元运算符失败的主要内容,如果未能解决你的问题,请参考以下文章
ASP MVC Grid Nonfactors - 向网格表添加新行
ASP.NET Core 2.0/Razor Pages - 如何在请求之间将数据保存在 NonFactors MVC6 网格中?