我在视图中有以下内容
@Html.DisplayFor(modelItem => item.FirstName)
我需要获得名字的第一个首字母。
我试过
@Html.DisplayFor(modelItem => item.FirstName).Substring(1,1)
但它似乎不起作用。我收到以下错误:..'System.Web.Mvc.MvcHtmlString'不包含'Substring'的定义,没有扩展名
答案 0 :(得分:26)
您可以在视图中实现如下:
@Html.DisplayFor(modelItem => modelItem.FirstName).ToString().Substring(0,5)
答案 1 :(得分:7)
您应该在ViewModel上放置一个属性,而不是尝试在视图代码中获取它。视图唯一的责任是显示模型给它的内容,它不应该从模型中创建新数据。
答案 2 :(得分:7)
我可能会建议视图不适合这样做。您可能应该有一个包含逻辑的单独模型属性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 )
答案 3 :(得分:1)
这对我有用(没有帮手):
@item.Description.ToString().Substring(0, (item.Description.Length > 10) ? 10 : item.Description.Length )
答案 4 :(得分:0)
我在尝试解决此问题时学到的两件事很关键:
我的解决方法如下:
string test = item.FirstName.ToString();
string test_add = ""; //creating an empty variable
if(test.Length == 0) //situation where we have an empty instance
{
test_add = "0"; //or whatever you'd like it to be when item.FirstName is empty
}
else
{
test_add = test.Substring(0, 1);
}
,您可以在剃须刀代码中使用@test_add代替@ item.FirstName
答案 5 :(得分:0)
这将截断10个字符,如果长度超过13个字符,则在末尾添加“ ...”。
@if (item.Notes.Length <= 13)
{
@Html.DisplayFor(modelItem => item.FirstName)
}
else
{
@(item.FirstName.ToString().Substring(0, 10) + "...")
}
答案 6 :(得分:-11)
如果您只想显示item.FirstName
的第一个字符,请执行以下操作:
@Html.DisplayFor(modelItem => item.FirstName.Substring(1,1))
你把它放在右括号的错误一边。