2012-07-31 2 views
3

다중 행으로 설정하고 페이지를 xhtml로 제공하면 ASP 텍스트 상자 컨트롤에 문제가있는 것 같습니다. 내가 작업중인 프로젝트는 콘텐츠 협상을 사용하여 ASP 페이지를 지원하는 브라우저에 application/xhtml + xml로 제공합니다. 문제는 ASP 텍스트 상자가 텍스트 영역을 페이지에 렌더링 할 때 명시 적으로 텍스트에 줄 바꿈을 추가 할 때 발생합니다. 의 메소드 렌더링 텍스트 상자의 반영처럼 보이는 다음 : 파이어 폭스와 오페라는 XHTML 콘텐츠 유형이 제공됩니다ASP 텍스트 상자 xhtml 및 추가 개행

if (TextMode == TextBoxMode.MultiLine) 
HttpUtility.HtmlEncode(Environment.NewLine + this.Text, (TextWriter) writer); 

, 그들은 텍스트 영역에서 텍스트의 한 부분으로 줄 바꿈을 해석하고 그래서에서 여분의 줄 바꿈을 얻을 내 텍스트 영역의 시작.

텍스트 상자를 서브 클래 싱하고 렌더링을 재정의 할 수 있지만, 이렇게하면 과장되어 약간의 문제가 수정 될 수 있습니다. 이 문제를 해결할 다른 방법이 있습니까? 그리고 왜 사람이 ASP 텍스트 상자 어쨌든이 일을 알고 있습니까?

답변

1

서브 클래스를 사용하는 대신 컨트롤 어댑터를 사용하거나 직접 <textarea을 작성하고 ASP.NET에서 컨트롤 이름 특성을 생성하도록 할 수 있습니다.

나는 ASP.NET WebForms가 짧은 시력 때문인 것으로 의심합니다. 어쨌든 미래는 MVC이므로 언제든지 변경 될 것으로 예상하지 마십시오. 나는 newline의 원래 목적이 textarea에 아무것도 사용하지 않고 "값"을 부여하는 것이라고 생각한다. (따라서 HTML 양식의 텍스트 영역에서 textarea를 "성공"하게 만든다.)

이것은 ASP.NET에서 볼 수있는 이상한 동작이 아닙니다. <head runat="server">의 끔찍한 HTML 서식도 목록에 있습니다.

+0

우리는 기존의 모든 텍스트 영역에 적용 할 수있는 컨트롤 어댑터 방식을 사용한다고 생각합니다. 단점은 렌더링을 모두 다시 구현해야한다는 것입니다. 그러나 그 주위에 많은 방법이 보이지 않습니다. 이전에는 컨트롤 어댑터에 대해 들어 본 적이 없었습니다. –

관련 문제