我只想问如何在Razor Html DisplayFor
中实现子串代码实际上它之前工作我添加了Substring以获取表中的前5个数字然后我遇到了错误
System.Web.Mvc.dll中出现“System.InvalidOperationException”类型的异常但未在用户代码中处理
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。
以下是我的代码集:
<tbody>
@for (var i = 0; i < Model.Cards.Count; ++i)
{
var counter = i + 1;
<tr>
<td valign="middle">
<p class="small">@counter</p>
</td>
<td valign="middle">
<p class="small">@Html.DisplayFor(x => x.Cards[i].Number.Substring(0,5))</p>
</td>
</tr>
}
</tbody>
提前致谢!
答案 0 :(得分:0)
正如斯蒂芬在评论中所说,在你的观点中间使用.Substring
并不能真正发挥作用。
相反,在ViewModel(定义{{1}}属性的那个)中,添加以下属性:
Number
这适用于C#5+,否则你可以使用旧方法并在默认构造函数中初始化它。
然后,在您的视图中使用它:
public string DisplayableNumber => Number.Length > 5 ? Number.ToString().Substring(0, 5) : "WhatYouWantHere";
另外,在ViewModel中使用这种类型的属性是一种很好的做法,因为Views不应该处理任何逻辑。