在Html.DisplayFor中的表循环中添加Substring

时间:2018-03-02 02:07:47

标签: html asp.net-mvc linq asp.net-mvc-4 razor

我只想问如何在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>

提前致谢!

1 个答案:

答案 0 :(得分:0)

正如斯蒂芬在评论中所说,在你的观点中间使用.Substring并不能真正发挥作用。

相反,在ViewModel(定义{{​​1}}属性的那个)中,添加以下属性:

Number

这适用于C#5+,否则你可以使用旧方法并在默认构造函数中初始化它。

然后,在您的视图中使用它:

public string DisplayableNumber => Number.Length > 5 ? Number.ToString().Substring(0, 5) : "WhatYouWantHere";

另外,在ViewModel中使用这种类型的属性是一种很好的做法,因为Views不应该处理任何逻辑。