MVC Razor需要获得Substring

我的观点中有以下内容

@Html.DisplayFor(modelItem => item.FirstName) 

我需要获得名字的第一个首字母。

我试过了

  @Html.DisplayFor(modelItem => item.FirstName).Substring(1,1) 

但它似乎没有用。 我收到以下错误:..’System.Web.Mvc.MvcHtmlString’不包含’Substring’的定义,没有扩展名

如果您只想显示item.FirstName的第一个字符,为什么不这样做:

 @Html.DisplayFor(modelItem => item.FirstName.Substring(1,1)) 

你有它在右括号的错误的一面。

您可以在视图中实现如下:

 @Html.DisplayFor(modelItem => modelItem.FirstName).ToString().Substring(0,5) 

您应该在ViewModel上放置一个属性,而不是尝试在视图代码中获取它。 视图唯一的责任是显示模型给它的内容,它不应该从模型中创建新数据。

我可能会建议视图不适合这样做。 您可能应该有一个单独的模型属性FirstInitial ,它包含逻辑。 您的视图应该只显示这个。

  public class Person { public string FirstName { get; set; } public string FirstInitial { get { return FirstName != null ? FirstName.Substring(0,1) : ""; } } ... } @Html.DisplayFor( modelItem => modelItem.FirstInitial ) 

您可以使用自定义扩展方法,如下所示:

 ///  /// Returns only the first n characters of a String. ///  ///  ///  ///  ///  public static string TruncateString(this string str, int start, int maxLength) { return str.Substring(start, Math.Min(str.Length, maxLength)); } 

希望这可以帮助…

这对我有用(没有帮手):

 @item.Description.ToString().Substring(0, (item.Description.Length > 10) ? 10 : item.Description.Length )