Asp.net服务器端条件属性还是未经检查的属性?

时间:2009-11-20 15:45:34

标签: asp.net html checkbox

我有以下aspx代码:

  <% foreach (ModelDefect modelDefect in GetCodes())
  {%>
<tr>
    <td><input disabled="disabled" name="<%= modelDefect.Code %>" value="<%= modelDefect.Code %>" type="checkbox" checked="<%=modelDefect.CompletedDate.HasValue? "checked":string.Empty %>" /></td>
    <td><a href="javascript:submitForm('<%= modelDefect.DefectId %>');"><%= modelDefect.Code %></a></td>   
    <td><%= modelDefect.Description %></td><td><%= modelDefect.AddedDate %></td>
</tr>
<% } %>

我希望检查复选框是否有完成日期,如果没有则取消选中。 W3似乎没有说明如何取消选中但包含该属性。我没有看到有条件地在项目上包含该属性的方法。我发现一个页面表明checked =“yes”或者checked =“no”应该可以工作,但它没有。我想要一个独立于浏览器和基于标准的解决方案或......一个干净的方式来有条件地在我的asp上添加标签服务器端是Ajax友好的吗? (据我所知,Response.Write在Asp.net AJax中不起作用。)

2 个答案:

答案 0 :(得分:3)

编写一个可以进行单元测试和重用的辅助方法:

public static string GetCheckedAttribute(DateTime? value)
{
    return value.HasValue ? "checked=\"checked\"" : string.Empty;
}

并在您的页面中调用它:

<input disabled="disabled" 
       name="<%= modelDefect.Code %>" 
       value="<%= modelDefect.Code %>" 
       type="checkbox" 
       <%= GetCheckedAttribute(modelDefect.CompletedDate) %>
/>

答案 1 :(得分:3)

获取属性并将其作为条件输出的一部分,这应该适合你

 <input disabled="disabled" 
        name="<%= modelDefect.Code %>" 
        value="<%= modelDefect.Code %>" 
        type="checkbox" 
        <%=modelDefect.CompletedDate.HasValue? "checked=checked":string.Empty %>"
  />