You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nonfactors MVC Grid三元运算符失效问题排查求助

解决Nonfactors MVC Grid中图标显示异常的问题

嘿,我一眼就发现你代码里的问题啦!

你当前的写法中,Formatted("{0}" == "folder" ? "<span class=\"glyphicon glyphicon-folder-open\"></span>" : "<span class=\"glyphicon glyphicon-file\"></span>") 存在一个关键错误:这里的"{0}"是一个字面量字符串,并不是模型中Type属性的占位符。也就是说,你其实在比较固定字符串"{0}"和"folder",这个比较永远会返回false,所以三元运算符始终会取第二个选项(文件图标);如果调换两个选项的位置,就会因为false而取第一个选项(文件夹图标),这就是为什么无论数据如何,显示的图标都不会变化。

正确的解决方案

Nonfactors MVC Grid提供了Rendered方法,它允许你直接针对每一行的模型对象生成自定义HTML内容,这比Formatted更适合这种动态判断的场景。修正后的代码如下:

@(Html.Grid(items)
    .Build(columns => {
        columns.Add(model => model.Type)
            .Rendered(model => model.Type == "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()
)

代码说明

  • Rendered(model => ...):这个方法接收一个委托,每一行的模型对象会被传入这个委托,你可以直接访问model.Type来做判断,动态生成对应的图标HTML。
  • .Encoded(false):必须保留这个设置,否则Grid会把你的HTML代码转义成纯文本,图标就无法正常显示了。

这样修改后,Grid就会根据每一行数据的Type属性值,正确显示文件夹或文件图标啦!

内容的提问来源于stack exchange,提问作者Bassie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:19:17