为什么以下代码无效:
@Html.DisplayFor(modelItem => item.SupplierName.ToString().Replace("\"", ""))
我收到以下错误:
System.InvalidOperationException was unhandled by user code
内部异常:
Templates can be used only with field access, property access,
single-dimension array index, or single-parameter custom indexer expressions.
正在使用Templates
,就像下面关于SO:replace character in text generated by html.displayfor的问题一样,这是唯一的解决方案吗?
我觉得编写模板只是为了格式化某些文本而感到奇怪吗?
答案 0 :(得分:2)
Html.DisplayFor正在为数据类型寻找DisplayTemplate。我提供了一个在您的场景中使用DisplayFor的粗略示例,尽管可能不需要。
在Views \ Shared下创建一个DisplayTemplates文件夹,并添加一个名为链接RemoveSlashes.cshtml的文件。
@model string
@Html.Raw(Model.Replace("\"", ""))
然后您可以在字段上使用此显示模板。
@Html.DisplayFor(modelItem => item.SupplierName, "RemoveSlashes")
然后,这会将您的项目传递给DisplayTemplate,并在显示模板中输出代码。