0

ブールプロパティIsMaleのモデルがあります。ビューでは、値を含むテーブルがあり、値を変更するにはどうすればよいですか?

私はこれを試しました:

 <td>
            @if (item.IsMale == true)
            {
                @Html.DisplayFor(modelItem => "Male")
            }
            else
            {
               @Html.DisplayFor(modelItem => "Female")
            }
        </td>

しかし、エラーが発生します:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

そして、作成ビューで、ラジオボタン>男性>女性を作成してブール値で返す方法を教えてください。

4

3 に答える 3

2

@Html.DisplayForモデルのプロパティを取得し、そのプロパティの値を出力します。あなたがしようとしているのは、ハードコードされた文字列を印刷することです。その必要はありませんDisplayFor。ちょうど試して:

<td>
    @if (item.IsMale)
    {
        <text>Male</text>
    }
    else
    {
        <text>Female</text>
    }
</td>

性別をブール値にしない場合は、より良い設計になります。「指定なし」などを後で追加することをお勧めします。性別を「ファーストクラス」のエンティティにする場合、「男性」と「女性」の名前、およびラジオボタンをハードコーディングする必要はありません。

プロパティ「Name」を持つ「Gender」というクラスがあるとします。次に、modelItemは、タイプ「Gender」のオブジェクトであるプロパティ「Gender」を持ちます。

<td>@Html.DisplayFor(modelItem => modelItem.Gender.Name)</td>

ラジオの場合、データソースから利用可能な性別のリスト全体を取得し、それらをRadioButtonListとしてViewModelに配置できます。次に、次を使用できます。

@Html.RadioButtonListFor(modelItem => modelItem.AllGenders)

ASP.NETMVC用にRadioButtonListFor<T>を実装している人はいますか?も参照してください。

于 2012-05-03T08:32:11.633 に答える
2
<td>

  @Html.Display(item.IsMale ? "Male" : "Female" )

</td>
于 2012-05-03T08:26:09.700 に答える
1

おそらく、次のようなものを使用できます。

@Html.CheckBoxFor(model => model.IsMale)

必要なラジオボタンだと思います...

@Html.RadioButtonFor(model => model.IsMale, true)

@Html.RadioButtonFor(model => model.IsMale, false) 
于 2012-05-03T08:21:35.553 に答える