2008-10-14 4 views
0

인사말!사용자 지정 서버 컨트롤의 태그에서 CSS 클래스 특성 제거

내가 다음 렌더링 할 수있는 사용자 정의 버튼 클래스를 만들었습니다

그러나

<span class="btnOrange"> 
    <input type="submit" id="ctl00_MainContent_m_GoBack" value="Back" name="ctl00$MainContent$m_GoBack"/> 
</span> 

, 그것은 (입력 태그의 외부 "클래스"속성을 참고) 대신에 다음과 같이 렌더링 :

<span class="btnOrange"> 
    <input type="submit" class="btnOrange" id="ctl00_MainContent_m_GoBack" value="Back" name="ctl00$MainContent$m_GoBack"/> 
</span> 

내 사용자 정의 버튼 클래스는 다음과 같습니다

[ToolboxData(@"<{0}:MyButton runat=server></{0}:MyButton>")] 
public class MyButton : Button 
{ 
    public override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass); 
     writer.RenderBeginTag("span"); 
     base.RenderBeginTag(writer); 
    } 

    public override void RenderEndTag(HtmlTextWriter writer) 
    { 
     writer.RenderEndTag(); 
     base.RenderEndTag(writer); 
    } 
} 

난 단지 CLA를 설정해야하기 때문에 SPAN 태그에 대한 s 속성을 사용하면 INPUT 태그에 대한 클래스 속성을 포함시키지 않거나 "비워 둘 수 있습니까?"

답변

1

이 작업을 수행 할 수 있습니다

private string _heldCssClass = null; 
public override void RenderBeginTag(HtmlTextWriter writer) 
{ 
    writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass); 
    writer.RenderBeginTag("span"); 
    _heldCssClass = this.CssClass; 
    this.CssClass = String.Empty; 
    base.RenderBeginTag(writer); 
} 

public override void RenderEndTag(HtmlTextWriter writer) 
{ 
    writer.RenderEndTag(); 
    base.RenderEndTag(writer); 
    this.CssClass = _heldCssClass; 
} 

내가 그렇게 렌더링하는 동안 발생하는 부작용을 방지하는 메소드 호출 사이에 개인 변수에 CssClass 속성을 유지하는 이유를. 이는 특정 코드에서 중요하지 않을 수 있습니다 ("CssClass 속성은 실제로 렌더링 후에 중요합니까?"). 그러나 위 코드가 공백으로 표시하는 것과 같은 부작용의 영향을 방지하거나 줄이는 것이 항상 좋은 생각입니다 재산. 그냥 입력하면 범위로 수행하는 것처럼 자신을 태그를 렌더링하는 대신 자신이 AddAttributesToRender를 (따라서 클래스 속성을 추가) 호출하는 기본 RenderBegin/RenderEnd 방법을, 호출의

0

span 시작 태그를 렌더링 한 후 writer 객체에서 class 속성을 제거하는 것은 어떻습니까? 나는 틀릴 수 있기 때문에 나는 ASP를 모른다.

+0

불행하게도, writer 객체에는 "RemoveAttribute"메서드 등이 없습니다. writer.AddAttribute (HtmlTextWriterAttribute.Class, "")를 호출하면 실제로 INPUT 태그에 두 개의 CLASS 특성이 만들어집니다. 하나는 값이 "btnOrange"이고 다른 하나는 빈 값입니다. – Bullines

0

, ...

관련 문제