2009-11-20 2 views
1

나는 다음과 같은 영문 코드가 있습니다Asp.net 서버 측 조건부 속성 또는 선택하지 않은 속성?

<% 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"가 작동해야한다고 제안하는 페이지를 발견했으나 그렇지 않습니다. 브라우저 독립적 인 및 표준 기반 솔루션 또는 Ajax 친화적 인 ASP에서 조건부로 태그 서버 측을 추가하는 깨끗한 방법을 원하십니까?

답변

3

단위 테스트 및 재사용 할 수있는 도우미 메서드 쓰기 (. Response.Write를 내가 그것을 이해 Asp.net 아약스에서 작동하지 않습니다) :

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

아를 위해 작동합니다. 얼마나 단순한 지, 나는 그것이 아주 명백했다라고 느낀다. – Maslow

+0

도우미 메소드가'DateTime '을 가져야하지 않아야합니다. CompletedDate가'bool?'이 아닌'DateTime? '이라고 생각하겠습니까? – Bob

+0

@Bob, 좋은 지적입니다. 내 대답을 업데이트했습니다. –

3

는 속성을 가지고 조건부 출력의 한 부분으로 넣어, 이것은 당신이

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

또 다른 간단한 해결책으로, 나는이 중 하나를 생각해 내지 못했던 이유로 아프다고 주장한다. 또한 VS2008은'<% %>'블럭 전체가 적색으로 표시되는 것을 혼란스럽게합니다. – Maslow