从 MVC 中的视图中删除字符列表
本文关键字:字符 列表 删除 MVC 视图 | 更新日期: 2023-09-27 18:36:25
我在显示文件夹中文件名的字段之一。我只需要显示文件名,但它也显示扩展名。
目前它像主题1一样显示.html但我希望它只显示主题我试图使用
@Html.DisplayFor(modelItem => item.ThemeName.Remove(item.ThemeName.Length-5))
但它是抛出错误
模板只能与字段访问、属性访问、 一维数组索引或单参数自定义索引器 表达 式。
我需要在
控制器中的字符串中进行更改,然后将列表传递给视图。所以我在控制器中使用了下面的代码。
templates[i].ThemeName = templates[i].ThemeName.Substring(0, templates[i].ThemeName.Length - 5);
模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
帮助程序采用表达式,而不是函数。然后它处理表达式。正如消息所说,它无法处理表达式内部的函数调用。您必须为模型提供计算值,但不能计算表达式中的值。
我只需要显示文件名,但它也显示扩展名。
使用 Path.GetFileNameWithoutExtension
.
您正在尝试使用代码删除int
。我想你试图使用:
@Html.DisplayFor(modelItem => item.ThemeName.Remove(item.Substring(item.ThemeName.Length-5)))
更好的方法是使用 LastIndexOf
:
@Html.DisplayFor(modelItem => item.ThemeName.Substring(0,item.ThemeName.LastIndexOf('.'))
您可以使用
split
方法执行此操作
string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 ){
fileName= fileName.Substring(0, fileExtPos);
}
希望这有帮助
@Html.DisplayFor(modelItem => item.ThemeName.Substring(0,item.ThemeName.Length-5))
尝试子字符串而不是删除
试试这个,它可能对你有用
@Html.DisplayFor(modelItem => item.ThemeName.Splite(".")[0])