4

Html.LabelForヘルパーを介してforeachステートメント内にGuarantorNameを表示しています。

しかし、期待した結果が得られていません。

GuarantorNameの実際の値を表示する代わりに、次のように出力します。Label値は、GuarantorNameである実際のフィールド名を示しますが、そのフィールドの名前の実際の値( "Bill Yeager"など)が必要です。デバッグ中にさまざまな異なる名が付いていることを確認しました。

デバッグ中に、コレクションに実際の名があることがリストに表示されます。

どうすればこれを達成できますか?

これがコードにおける私の見解です:

@foreach (var item in Model.Guarantors)
                {
                    <td>
                        @Html.CheckBoxFor(model => item.isChecked)
                        @Html.LabelFor(model => item.GuarantorName)
                    </td>
                }

これを試してみると、次のエラーが発生します。

@Html.DisplayFor(model => item.GuarantorFirstName + item.GuarantorLastName)

例外の詳細:System.InvalidOperationException:テンプレートは、フィールドアクセス、プロパティアクセス、単一次元配列インデックス、または単一パラメーターのカスタムインデクサー式でのみ使用できます。

Source Error:


Line 95:                     <td>
Line 96:                         @Html.CheckBoxFor(model => item.isChecked)
Line 97:                         @Html.DisplayFor(model => item.GuarantorFirstName + item.GuarantorLastName)
Line 98:                     </td>
Line 99:                 }
4

2 に答える 2

22

LabelForはプロパティ名を表示します。DisplayForにフィールドの値を表示させます。

@foreach (var item in Model.Guarantors)
                {
                    <td>
                        @Html.CheckBoxFor(model => item.isChecked)
                        @Html.DisplayFor(model => item.GuarantorName)
                    </td>
                }
于 2012-10-05T20:19:27.507 に答える
0
@foreach (var item in Model.Guarantors)
                {
                    <td>
                        @Html.CheckBoxFor(model => item.isChecked)
                        @Html.DisplayFor(model => item.GuarantorName)
                    </td>
                }


And also we can use when used IList<Model>

@for(int i=0;i<model.Guarantors.count();i++)
{
 <td>
                        @Html.CheckBoxFor(model =>model[i].isChecked)
                        @Html.DisplayFor(model => model[i].GuarantorName)
                    </td>
}
于 2014-01-30T06:20:23.400 に答える