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.

在创建视图中,我如何制作单选按钮 >Male >Female 并以 bool 形式返回?

4

3 回答 3

2
<td>

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

</td>
于 2012-05-03T08:26:09.700 回答
2

@Html.DisplayFor获取模型的一个属性并输出该属性的值。你想要做的是打印一个硬编码的字符串。你不需要DisplayFor那个。试试看嘛:

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

如果您不将性别设为布尔值,则更好的设计是。您可能想在以后添加“未指定”或其他内容。如果您将性别设置为“一流”实体,则不必对“男性”与“女性”的名称以及单选按钮进行硬编码:

假设您有一个名为“Gender”的类,其属性为“Name”。然后,您的 modelItem 将具有一个属性“Gender”,它是一个“Gender”类型的对象。

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

对于收音机,您可以从数据源中检索可用性别的完整列表,并将它们作为 RadioButtonList 放入 ViewModel。然后你可以简单地使用:

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

另请参阅是否有人为 ASP.NET MVC 实现 RadioButtonListFor<T>?

于 2012-05-03T08:32:11.633 回答
1

也许你可以使用这样的东西:

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

我看到这是您想要的单选按钮...

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

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