单选按钮检查属性问题

时间:2013-10-08 15:08:04

标签: html5 asp.net-mvc-3

我的Html代码如下所示。但是总是选中最终选项按钮作为选中的一个。如何修复此问题?

<div id="employee" style="margin: 7px 0;">
            <div>
                   <input id="james-johnson" type="radio" name="employee" value="james-johnson" checked="checked"><label for="james-johnson">James Johnson</label>
               </div>
            <div>
                   <input id="boss-hog" type="radio" name="employee" value="boss-hog" checked="unchecked"><label for="boss-hog">Boss Hog</label>
               </div>
            <div>
                   <input id="jake-sanders" type="radio" name="employee" value="jake-sanders" checked="unchecked"><label for="jake-sanders">Jake Sanders</label>
               </div>
            <div>
                   <input id="dawn" type="radio" name="employee" value="dawn" checked="unchecked"><label for="dawn">Dawn</label>
               </div>

        </div>

ASPX代码如下

<div id="employee" style="margin: 7px 0;">
            <% foreach (var employee in Model.Provider.Employees)
               {  %><div>
                   <input id="<%: employee.Key %>"
                       type="radio" name="employee" value="<%: employee.Key %>" checked="<%:employee.IsEmployeeSelected ?? "unchecked" %>" /><label for="<%: employee.Key  %>"><%: employee.Name%></label>
               </div>
            <% } %>
        </div>

UPDATE(当我应用@Satpal方法时):

<div id="employee" style="margin: 7px 0;">
            <div>
                   <input id="james-johnson" type="radio" name="employee" value="james-johnson" checked="checked"><label for="james-johnson">James Johnson</label>
               </div>
            <div>
                   <input id="boss-hog" type="radio" name="employee" value="boss-hog" checked=""><label for="boss-hog">Boss Hog</label>
               </div>
            <div>
                   <input id="jake-sanders" type="radio" name="employee" value="jake-sanders" checked=""><label for="jake-sanders">Jake Sanders</label>
               </div>
            <div>
                   <input id="dawn" type="radio" name="employee" value="dawn" checked=""><label for="dawn">Dawn</label>
               </div>

        </div>

1 个答案:

答案 0 :(得分:1)

As checked属性是布尔属性。 如果存在,则指定在页面加载时应预先选择(选中)元素。

仅当checked未设置<{p}}时才设置employee is Selected属性

<input id="<%: employee.Key %>"
   type="radio" name="employee" value="<%: employee.Key %>" 
   "<%:employee.IsEmployeeSelected ? "checked" : "" %>" />
   <label for="<%: employee.Key  %>"><%: employee.Name%>
   </label>

修改后的代码

"<%: employee.IsEmployeeSelected ? "checked" : "" %>" 

employee.IsEmployeeSelected转换为布尔属性

编辑:根据评论 Currentely它被“检查”并且为空

"<%: !string.IsNullOrEmpty(employee.IsEmployeeSelected) ? employee.IsEmployeeSelected : "" %>"

或者只需将<%:employee.IsEmployeeSelected ?? "" %>设置为

<input <%:employee.IsEmployeeSelected ?? "" %> />

更新

OP已将字段IsEmployeeSelected更新为布尔值

 public bool IsEmployeeSelected { get; set; }

因此使用<%:employee.IsEmployeeSelected ? "checked" : "" %>代替checked="<%:employee.IsEmployeeSelected ? "checked" : "" %>"