我遇到了一个问题,我试图通过迭代对象并使用 HtmlHelpers 向用户显示值。目前,一列将携带我写入屏幕的项目的数据类型,它们是字符串值。当我尝试使用 DisplayFor 方法呈现数据类型字符串的值“Boolean”时,我遇到了一个问题。我收到一个 FormatException 说“字符串未被识别为有效的 bool 值。”我试过几种方法将它转换为字符串,但没有成功。如果我将字符串从“Boolean”更改为其他任何内容,它就可以正常工作。有什么建议吗?
<%foreach (var matrixColumnView in Model.MatrixColumns)
{%>
<tr id="<%="ColRow_" + matrixColumnView.Key %>" class="columnRow">
<td class="ui-helper-hidden">
<%=Html.HiddenFor(x => x.MatrixColumns[matrixColumnView.Key].EntityId)%>
</td>
<td>
<%=Html.HiddenFor(x => x.MatrixColumns[matrixColumnView.Key].Sequence)%>
<%=Html.DisplayFor(x => x.MatrixColumns[matrixColumnView.Key].Sequence, matrixColumnView.Value.Sequence.ToString())%>
</td>
<td>
<%=Html.HiddenFor(x => x.MatrixColumns[matrixColumnView.Key].Name)%>
<%=Html.DisplayFor(x => x.MatrixColumns[matrixColumnView.Key].Name, matrixColumnView.Value.Name)%>
</td>
<td>
<%=Html.HiddenFor(x => x.MatrixColumns[matrixColumnView.Key].DataTypeName) %>
<%=Html.DisplayFor(x => x.MatrixColumns[matrixColumnView.Key].DataTypeName, (string)matrixColumnView.Value.DataTypeName) %>
</td>
</tr>
<%} %>
最佳答案
代替:
<%=Html.DisplayFor(x => x.MatrixColumns[matrixColumnView.Key].DataTypeName, (string)matrixColumnView.Value.DataTypeName) %>
试试看:
<%=Html.DisplayFor(x => x.MatrixColumns[matrixColumnView.Key].DataTypeName) %>
通过传入 (string)matrixColumnView.Value.DataTypeName
-(大概)评估为“Boolean” - 作为第二个参数,您告诉 MVC 寻找名为“Boolean”的显示模板”显然,它找到的模板无法显示 String 值。通常,最好让框架决定使用哪个显示模板。
这里有一篇有用的文章讨论了 MVC 如何解析显示/编辑器模板:
http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html
关于c# - 使用 HtmlHelper DisplayFor 的字符串值 "Boolean"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465856/