Asp.net服务器端条件属性还是未选中属性?

Asp.net服务器端条件属性还是未选中属性?,asp.net,html,checkbox,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.

我有以下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>
<% } %>


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

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

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) %>
/>

获取属性并将其作为条件输出的一部分,这应该对您有用

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

啊。多么简单,我觉得这很明显。你的助手方法不应该采用
日期时间吗?
我猜CompletedDate是
日期时间吗?
不是
bool?
另一个简单的解决方案,我请求生病是我没能想出这两个方法的原因。另外,我的VS2008让我感到困惑,因为整个
块显示为红色,好像在某个地方有一个未关闭的
,而没有。