3

我在视图中使用 foreach 循环来显示几个单选按钮行..

sample radiobutton

<tr>
    <td width="30%">
    Integrity
    </td>
    <td width="17%">@Html.RadioButtonFor(x => x.main.ElementAt(i).nested.integrity, 1, new { id = "main_" + i + "__nested_integrity) Poor
    </td>
    <td width="18%">@Html.RadioButtonFor(x => x.main.ElementAt(i).nested.integrity, 2, new { id = "main_" + i + "__nested_integrity" }) Satisfactory
     </td>
     <td width="18%">@Html.RadioButtonFor(x => x.main.ElementAt(i).nested.integrity, 3, new { id = "main_" + i + "__nested_integrity" }) Outstanding
     </td>
     <td width="16%">@Html.RadioButtonFor(x => x.main.ElementAt(i).nested.integrity, 4, new { id = "main_" + i + "__nested_integrity" }) Off
     </td>
     </tr>



因为我在模型绑定时遇到问题,所以我创建了手动 id 以满足我的要求(不同的递增 id)。
但是我认为名称属性再次出现问题。对于第一个和每个循环,我得到相同的名称属性(不递增),即如果我从第一个循环中选择单选按钮,那么它会从其他循环中取消选择 taht 行。

喜欢

Loop1 id= "main_0__nested_integrity"
Loop2 id= "main_0__nested_integrity"
Loop1 name= "nested.integrity"
Loop2 name= "nested.integrity"

如您所见,所有循环的名称属性都是相同的,具有不同的 id。
现在我的问题是......是否可以像 id 一样覆盖 RadioButtonFor 的 name 属性?

4

1 回答 1

3

现在我的问题是......是否可以像 id 一样覆盖 RadioButtonFor 的 name 属性?

不,那是不可能的。name 属性将根据您作为第一个参数传递的 lambda 表达式计算。

就我个人而言,我会使用编辑器模板,根本不用担心任何循环

@model MainViewModel
<table>
    <thead>
        ...
    </thead>
    <tbody>
        @Html.EditorFor(x => x.main)
    </tbody>
</table>

并在相应的编辑器模板中:

@model ChildViewModel
<tr>
    <td width="30%">
        Integrity
    </td>
    <td width="17%">
        @Html.RadioButtonFor(x => x.nested.integrity, 1) Poor
    </td>
    <td width="18%">
        @Html.RadioButtonFor(x => x.nested.integrity, 2) Satisfactory
     </td>
     <td width="18%">
         @Html.RadioButtonFor(x => x.nested.integrity, 3) Outstanding
     </td>
     <td width="16%">
         @Html.RadioButtonFor(x => x.nested.integrity, 4) Off
     </td>
</tr>
于 2012-05-23T08:46:13.837 回答