asp.net mvc 3 razor在视图中更改模型值

时间:2012-05-03 08:16:22

标签: c# asp.net-mvc razor

我有bool属性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.

在创建视图中我如何制作单选按钮&gt;男&gt;女性并将其以bool形式返回?

3 个答案:

答案 0 :(得分:2)

<td>

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

</td>

答案 1 :(得分: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)

另见Has anyone implement RadioButtonListFor<T> for ASP.NET MVC?

答案 2 :(得分:1)

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

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

我看到它是你想要的单选按钮......

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

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