在Html.Display中格式化文本在ASP.NET MVC 5中不起作用

时间:2015-06-23 14:10:46

标签: asp.net asp.net-mvc

为什么以下代码无效:

@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的问题一样,这是唯一的解决方案吗?

我觉得编写模板只是为了格式化某些文本而感到奇怪吗?

1 个答案:

答案 0 :(得分:2)

Html.DisplayFor正在为数据类型寻找DisplayTemplate。我提供了一个在您的场景中使用DisplayFor的粗略示例,尽管可能不需要。

在Views \ Shared下创建一个DisplayTemplates文件夹,并添加一个名为链接RemoveSlashes.cshtml的文件。

@model string
@Html.Raw(Model.Replace("\"", ""))

然后您可以在字段上使用此显示模板。

@Html.DisplayFor(modelItem => item.SupplierName, "RemoveSlashes")

然后,这会将您的项目传递给DisplayTemplate,并在显示模板中输出代码。