Html.DisplayFor不适用于盒装价值

时间:2014-08-31 17:50:07

标签: c# asp.net-mvc-4 razor boxing

我有一个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>
}

1 个答案:

答案 0 :(得分:0)

如果您希望仅显示值且不需要任何强力绑定,请使用 原始 模板。

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

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