Html.DisplayFor not Working For Boxed Value

本文关键字:Boxed Value For Working DisplayFor not Html | 更新日期: 2023-09-27 18:20:05

我有一个MVC4剃刀视图,在该视图中,我将使用元数据的反射来显示数据表,以便在运行时动态构建列。int列不会出现在@Html.DisplayFor中,但会出现在string、bool等中。使用@Html.TextboxFor或仅将值写入页面时,所有列似乎都会出现。Visual Studio在调试器中显示了对象{int}的类型,我认为这是因为装箱。我的猜测是DisplayFor正在关闭类型对象{int}而不是int。如果可能的话,有没有办法在不为对象{int}创建新的DisplayFor模板的情况下实现这一点?

@foreach (var item in words)
{
   <tr>
   @foreach (var prop in wordMeta.GetMetaProperties())
   {
      dynamic val = prop.GetInstanceValue(item);
      <td>@Html.DisplayFor(a => val)</td>
   }
   </tr>
}

Html.DisplayFor not Working For Boxed Value

如果您只想显示值而不需要任何强绑定,那么只需使用Raw模板。

dynamic val = prop.GetInstanceValue(item);
<td>@Html.Raw(val)</td>

这将适用于所有数据类型。希望能有所帮助。