2011-03-29 5 views
1

ASP.NET에서, 당신은 사용자 정의 HTML 태그를 추가 할 수있는 UserControl에 값이없는 속성을 추가ASP.NET은 :

myLabel.Attributes['my-custom-attribute'] = "someValue"; 
// or Attributes.Add() 

를 통해 UserControl이 속성을 ...하지만 는 어떻게 속성을 추가 할 수 있습니다 값이 없습니다? 예를 들어 W3C 사양에서는 checked 속성 만 확인란에 표시하면 (checked='true' 또는 그 대신) 체크 된 것으로 간주됩니다.

<span ID="ctl-blah-blah-myLabel" my-custom-attribute>some text</span> 

일부 클라이언트 측 동작을 위해 내 페이지의 특정 요소에 태그를 지정하기 위해 이와 같은 방법을 사용하고 있습니다. 클래스를 사용하여 동일한 작업을 수행 할 수 있다는 것을 알고 있지만 (1) 클래스가 서버 측을 조작 할 수 있는지, (2) 태그 지정을 위해 클래스 선언을 오염시키지 않으려는 경우 (일부 경우에는 이상하게 보일 수 있음) , 알아).

답변

2

나는 할 수 있다고 생각하지 않는다. 당신이 원하는 것은 올바른 문서가 아니라는 것이다. checked 속성과 관련하여보고있는 W3C 사양은 오래되었습니다. 적절한 양식, now-a-days는 checked = "checked"를 넣는 것입니다.

많은 브라우저에서이를 받아 들일 수 있지만 권장하지는 않습니다. 성취하려는 것은 무엇입니까? 어쩌면 더 나은 해결책이있을 수 있습니다.

+1

HTML은 XML의 파생물이 아닙니다. HTML은 XML이 있기 훨씬 전에 존재했습니다. 그들은 둘 다 SGML의 파생물입니다. http://en.wikipedia.org/wiki/HTML#Origins – smartcaveman

+0

글쎄, 내가 말했듯이, HTML 요소에 태그를 지정하여 클라이언트 측 코드에서 다르게 동작하도록하는 밝은 생각 *이있었습니다 (예 : "읽기 전용" 또는 "수정"등). 클래스를 사용하여 동일한 작업을 수행 할 수 있다는 것을 알고 있지만, 값이없는 속성으로이 작업을 수행 할 수 있는지 궁금해하고있었습니다. XML 스펙에 대한 좋은 지적. : D +1 –

+0

@ 리차드'my-custom-attribute = "true"'와 같은 것을 사용하지 않는 것이 어떨까요? 당신은 똑같은 것을 성취 할 수 있습니다. – CodingGorilla

0

asp : Label 대신 asp : Literal을 사용하면 그렇게 할 수 있습니다.

+0

아,하지만 물론 '라벨'에 대한 이야기가 아닙니다. D 죄송합니다. 일반적으로 UserControls/WebControls. : D –

+1

Touche - 더 일반적으로 마크 업에 대해 더 많은 권한을 부여하는 컨트롤이 있습니다. 예를 들어 WebControls에 HtmlControls를 선호합니다. UserControl은 약간 다른 짐승입니다. 그들은 단지 다른 마크 업의 조합이기 때문에 "property = 'value'"구문은 브라우저로 보내지는 HTML에 직접적인 영향을주지 않으며 "property = 'true'"라고 말하고 HTML을 렌더링 할 수 있습니다 컨트롤에서 다르게 – joelt

1

이것은 당신이 원하는 접근 방식이 아닙니다. 조작 된 XHTML과 잘못된 형식의 ASP.NET이 생성됩니다. 현재의 W3C 규격조차도 checked이었던 것이 이제는 checked="checked"으로 쓰여졌다는 것을 암시합니다. 2 가지 접근법이 있습니다.

  1. my-custom-attribute="true"

  2. 사용 클래스로서, 부울 값과 같은 속성을 사용. 클래스를 오염시키고 싶지는 않지만 클래스 정의를 구성하는 방법은 문제가되지 않는다고 말했습니까? 우선, 이와 같은 마커를 별도의 .css 파일에 넣고 적절하고 표현적인 명명 규칙을 사용하고 있는지 확인하십시오. CSS 동작과 디스플레이 사이의 겹침이 원활하게 이루어질 수 있습니다.

+0

나는 CSS 관점에서 JS 관점에서 더 많은 것을 생각하고있었습니다. 그러나 이것들은 아주 잘 찍힌 몇 가지 점입니다. 감사! –

+0

이처럼 여러 개의 부울 필드를 사용하려는 경우 CSS 클래스를 사용하는 것이 좋습니다. 클라이언트 쪽을 조작하기가 더 쉽습니다 (예 : jQuery와 같이). – smartcaveman