我有以下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中不起作用。)
答案 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 %>"
/>