2012-05-22 2 views
18

asp.net에서 사용자 지정 특성을 사용하는 경우 대개 그대로 렌더링됩니다.Asp.net 확인란 및 html 데이터 특성

이 마크 업을 고려할 때 (참고 : 같은 id, namefor 같은 속성들이 생성 ID로 모든 예에서 제거/이름은 장황) :

<asp:TextBox runat="server" data-foo="bar" /> 

는 asp.net에서 렌더링 : 이다

<input type="text" data-foo="bar" /> 

는 asp.net 손길이 닿지 않은 data-foo 유지합니다.

확인란은 일반적으로 다음과 같이 표현된다 :

<asp:CheckBox runat="server" Text="Normal" /> 

는 다음과 같이 렌더링 :

<asp:CheckBox runat="server" Text="Custom attribute" data-foo="bar" /> 

그것은으로 렌더링 :

<input type="checkbox" /> 
<label>Normal</label> 

하지만 당신은 체크 박스에서 사용자 정의 속성을 추가하는 경우 :

<span data-foo="bar"> 
    <input type="checkbox" /> 
    <label>Custom attribute</label> 
</span> 

보시다시피 속성을 유지하기 위해 렌더링 된 범위입니다. 코드 뒤에 속성을 추가하는 경우에도 마찬가지입니다. 이것은 다른 HtmlControl, AFAIK에서는 발생하지 않습니다.

누군가이 스팬이 속성을 유지하기 위해 렌더링되는 이유를 알고 있습니까?

어쨌든 입력 태그에 속성을 렌더링합니까?

+0

재미있는 .. 그냥 궁금해서, 당신은 \ –

답변

20

문서로드에 jQuery를 사용하여 data-foo 속성을 추가,하지만 난 당신이 input에 직접 속성을 추가 할 수 있습니다 가정

myCheckBox.InputAttributes.Add(...) 

재 :에서 CheckBox의 요소 같은을 코드 - behid ference 링크 : 당신이 CheckBox에 적용되는 속성이 모두 영향을 미칠 수 있도록

업데이트

추가 부모 요소가 사용됩니다 input 및 텍스트 인라인 요소이기 때문에 span (div이 아님)이라고 가정합니다. 다른 시나리오에서 사용하는 것이 더 편리합니다.

참조 링크 :

+0

니스의 추가 속성을 사용하고있는, 내가 전에이 InputAttributes을 언급 한 적이. Attributes.Add를 시도했는데 작동하지 않았습니다. – Andre

4

이것은 렌더링 엔진이 CheckBox 컨트롤을 빌드하는 방법이며, 그에 대해서는별로 할 일이 없습니다.

입력 할 내용은 runat="server"입니다.

<input id="myInput" runat="server" type="checkbox" data-foo="bar"/> 
<label>Custom attribute</label> 

또 다른 옵션은이 범위로 렌더링 왜 잘 모르겠어요

$(function(){ 
    $('span[data-foo]').each(function(){ 
     var $span = $(this); 
     var value = $span.data('foo'); 
     $span.find('input').data('foo',value);   
    }); 
}) 
1

그냥 나는 모든 사람이 실패 할 때 사용하는 다른 방법을 추가, 당신은 항상 리터럴 컨트롤을 사용하고 렌더링 할 수 있습니다 당신이 무엇을 필요. 포스트 백을 처리 할 때는 좀 더 많은 작업을해야하지만 때로는 필요한 HTML을 얻을 수있는 유일한 방법이기도합니다.

마크 업 :

<asp:Literal ID="myLiteral" runat="server"/> 

Codebeside :

myLiteral.Text = string.Format("<input type=\"checkbox\" data-foo=\"{0}\" /><label>Normal</label>", value)