【发布时间】:2014-06-27 16:00:26
【问题描述】:
我正在尝试截断一个长字符串以仅在我的索引页面上显示。如下所示:
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
描述可以有 500 个字符长,但我不能在那个网格布局上显示那么多。我想只显示前 25 个,因为他们可以在详细信息页面上看到所有这些,但如果不在模型级别截断它,我似乎无法让它工作。
这样的东西会很好:
@Html.DisplayFor(modelItem => item.Description.Take(25))
@Html.DisplayFor(modelItem => item.Description.Substring(0,25)
编辑
当我尝试任一方法时,我在运行时遇到以下异常。
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
【问题讨论】:
-
您是否考虑过创建一个额外的模型属性来执行子字符串并使用它?
-
是的,如果没有办法使用模板和单个属性,我就是这样做的。
-
您的具体问题是传递给
Html.DisplayFor的表达式必须引用实际属性,而不是特定值。换句话说,你只能做@Html.DisplayFor(m => item.Description),不能做@Html.DisplayFor(m => item.Description.Substring(0, 25))。不过,您不需要为此使用Html.DisplayFor,因此您只需编写@item.Description.Substring(0, 25)。但是,请记住@48klocs 对 Nathan A 的回答的评论。 -
请注意,
Take()返回一个IEnumerable<char>,而不是一个字符串。Substring()更适合这个。
标签: c# .net asp.net-mvc