asp.net 에서 option 항목 에 선도 빈 칸 을 채 우 는 방법
이렇게 간단하게 이 효 과 를 실현 하 니 할 말 이 없 는 것 같다.그러나 우리 가 ASP.NET 에서 서버 컨트롤 인 Listbox 나 DropDownlList 를 사용 할 때 이 효 과 를 실현 하려 면 문제 가 발생 합 니 다.ListItem 류 의 Text 속성 은 HTML 코드 로 출력 될 때 자동 으로 HtmlEncode 변환 을 하기 때문에 위의 예제 가 출력 됩 니 다.
정말 답답 하 다.나 는 이 문 제 를 처음 만 났 을 때 매우 추 한 방법 으로 해결 했다.컨트롤 을 다시 불 러 오 는 것 입 니 다.Render 에서" "nbsp대개:
class XxxDropDownList : DropDownList { protected override void Render(HtmlTextWriter writer) { StringBuilder strb = new StringBuilder(); StringWriter sw = new StringWriter(strb); HtmlTextWriter htw = new HtmlTextWriter(sw); base.Render(htw); strb.Replace(" ", " "); writer.Write(strb.ToString()); } } 이 해결 방안 은 문제 가 매우 많 고 효율 은 하나의 일 이 며 매우 완비 되 지 않 았 다.이런'야만 적'인 렌 더 결 과 를 수정 하 는 방법 외 에 도 추녀 의 방법 중 하 나 는 전각 의 스페이스 를 사용 하 는 것 이 바로''이다.그러나 중국어 시스템 에서 도 이런 방법 은 과거 에 말 한 것 같 지만 순수한 영어(Not support East-Asian language)환경 에서 이러한 Option 항목 은 어 지 럽 습 니 다.잘못된 효 과 는 다음 그림 과 같 습 니 다. // 왼쪽 그림 은 중국어 시스템 에서 오른쪽 그림 은 순수 영어 시스템 에서 그럼 어 떡 하지?ListItem 을 다시 불 러 옵 니까?!그러나 이 길 은 통 하지 않 습 니 다.ListItem 류 는 sealed 로 장식 되 어 있 습 니 다.나중에 나 는 를 사용 할 수 있다 는 것 을 알 게 되 었 다.DropListBox 가 정확 한 HTML 코드 를 출력 할 수 있 도록'원본 형식'을 사용 합 니 다.무엇이 입 니까?의 원시 형식 은? 이 물건 은 원래 RFC 1866 에서 정 의 된 named enity 로 전 칭:no-break space,CDATA 형식 은&\#160;이다.ListItem 의 Text 에 160 을 문자 로 넣 으 면 정확 한 HTML 출력 을 얻 을 수 있 습 니 다.효 과 는 첫 번 째 그림 의 HTML 예제 효과 와 같 습 니 다.서버 쪽 코드:
char nbsp = (char)0xA0; for ( int i=0 ; i < 5 ; ++i ) { ddl3.Items.Add(new ListItem("Level 0".PadLeft(i+7, nbsp) + i, i.ToString())); } 생 성 된 클 라 이언 트 코드 는: