加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在foreach中的mvc radiobuttons

发布时间:2020-12-16 04:16:56 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC,我在foreach中有一些RadioButton: foreach (var item in group) { tr td @Html.RadioButtonFor(modelItem = item.CheckerApproved,true) @Html.RadioButtonFor(modelItem = item.CheckerApproved,false) /td /tr} 因此,对于组中的每个项目,都
我正在使用MVC,我在foreach中有一些RadioButton:
foreach (var item in group) {
                    <tr>
                        <td>
                            @Html.RadioButtonFor(modelItem => item.CheckerApproved,true)
                            @Html.RadioButtonFor(modelItem => item.CheckerApproved,false)
                        </td>
                    </tr>
}

因此,对于组中的每个项目,都应该有一个真假的单选按钮.

问题是当组中有多个项目时,您最终可能会遇到两个项目:

<tr>
   <td>
      <input id="item_CheckerApproved" type="radio" value="True" name="item.CheckerApproved">
      <input id="item_CheckerApproved" type="radio" value="False" name="item.CheckerApproved 
         checked="checked">
   </td>
</tr>

<tr>
   <td>
      <input id="item_CheckerApproved" type="radio" value="True" name="item.CheckerApproved">
      <input id="item_CheckerApproved" type="radio" value="False" name="item.CheckerApproved 
         checked="checked">
   </td>
</tr>

我想要的是无线电按钮组是分开的.因此,更改第一行中的值不会影响第二行中的值.但是,如果您在顶行设置了say,则选择第二行中的任一值,取消第一行中的true.

我相信这是因为它们是由name属性链接的.但是,您实际上无法手动重置此名称属性.

有谁知道我怎么能使它工作,所以每一行的真假互相交互,但对其他行的radiobuttons没有影响?

解决方法

不要在视图中写循环.它们是丑陋的,你最终会遇到你问题中描述的不良行为.使用编辑器模板,如下所示:
<table>
    <thead>
        <tr>
            <th>Approved status</th>
        </tr>
    </thead>
    <tbody>
         @Html.EditorFor(x => x.Groups)
    </tbody>
</table>

这里我假设您的视图模型具有IEnumerable< GroupViewModel>类型的Groups集合属性.现在剩下的就是编写相应的编辑器模板,该模板将对Groups集合中的每个元素执行(?/ Views / Shared / EditorTemplates / GroupViewModel.cshtml):

@model GroupViewModel
<tr>
    <td>
        @Html.RadioButtonFor(x => x.CheckerApproved,"true") <span>Approved</span>
        @Html.RadioButtonFor(x => x.CheckerApproved,"false") <span>Not approved</span>
    </td>
</tr>

现在不仅您不再需要在视图中编写任何丑陋的foreach循环,而且最终会得到正确的命名约定.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读