2012-05-03 75 views
0

我有模型与布尔属性IsMale。鉴于我有价值表我怎么能改变价值?asp.net mvc 3剃刀更改模型值的视图

我尝试这样做:

<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. 

而且在创建视图我怎么可以让单选按钮>男>女和布尔退货吗?

回答

1

也许你可以使用这样的事情:

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

我看,这是你想要一个单选按钮...

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

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

复选框会呈现这样的选择给用户一个非常不寻常的方式:“[]我是一个男性的人(请不要检查这个盒子如果你是一个女性的人)“ – chiccodoro

+0

同意,我意识到,这就是为什么我更新了我的答案。 – kaze

2
<td> 

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

</td> 
2

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

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

如果您不将性别设置为布尔值,那么更好的设计是。您可能想要添加“未指定”或稍后的任何内容。如果您将性别设置为“头等舱”实体,则“男性”与“女性”以及单选按钮的名称不必进行硬编码:

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

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

和收音机,你可以从你的数据源检索可用性别的整个列表,并把它们作为一个单选按钮列表到视图模型。然后,你可以简单地使用:

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

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