4

オブジェクトを反復処理し、HtmlHelpers を使用してユーザーに値を表示しようとしているという問題が発生しています。現在、1 つの列に、画面に書き込む項目のデータ型が含まれており、それらは文字列値です。DisplayFor メソッドを使用して、データ型文字列である値「ブール値」をレンダリングしようとすると、問題が発生します。「文字列は有効なブール値として認識されませんでした」という FormatException が発生しています。いくつかの方法で文字列としてキャストしようとしましたが、うまくいきませんでした。文字列を「ブール値」から他の文字列に変更すると、問題なく動作します。助言がありますか?

<%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>
<%} %>
4

1 に答える 1

2

それ以外の:

<%=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" と評価される - を 2 番目の引数として渡すことで、MVC に "Boolean" という表示テンプレートを探すように指示します。明らかに、見つかったテンプレートは String 値を表示できません。通常、使用する表示テンプレートをフレームワークに決定させる方が適切です。

MVC がディスプレイ/エディター テンプレートを解決する方法について説明している便利な記事がここにあります。

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

于 2012-09-17T19:39:13.700 に答える