2016-08-05 6 views
0

C 형식의 목록에서 HTML 표를 작성하고 있습니다. 지금까지 테이블을 잘 만들었지 만 테이블을 만드는 문자열 내의 <TD> 태그 중 하나에 스타일을 추가해야합니다.StringBuilder를 사용하여 문자열 내에서 <TD> 태그에 스타일 정의를 추가하는 방법은 무엇입니까?

문자열 작성기를 사용하여 문자열에 추가 할 때 스타일 정의를 TD에 추가하기 만하면됩니다. 하지만 스타일 정의를 사용하여 구문 오류가 발생합니다.

질문 : 문자열 정의에 태그를 추가하는 방법은 무엇입니까?

StringBuilder releaseStatusTableBodyData = new StringBuilder(); 

그런 다음 테이블 문자열로 행 안부를 추가

나는 문자열 빌더 문자열 인스턴스를 사용하여 테이블의 몸을 만들 수 있습니다. 스타일에서 따옴표를 제거하면 구문 오류가 하나 같이 제거하지 않았다

 foreach(var row in releaseStatusList) 
     { 

      //for each record create a new table row 
      releaseStatusTableBodyData.Append("<TR>\n"); 


      releaseStatusTableBodyData.Append("<TD style=""bgcolor: green;"">"); //added the style to the TD here, but get syntax error on the style telling me) is required. 
      releaseStatusTableBodyData.Append(row.Days_Owned); 
      releaseStatusTableBodyData.Append("</TD>"); 



      releaseStatusTableBodyData.Append("</TR>\n"); //end of row 

     } 

답변

1

은 문자열의 시작 부분에 (@)을 그대로 문자를 넣습니다. 문자열 내에서 이스케이프 문자열을 추가하는 몇 가지 배경을

releaseStatusTableBodyData.Append(@"<TD style=""background-color: green;"">"); 
           ^^^ 

쉽게 보일 수도 있지만, 나를 위해이 훨씬 더 쉽게 읽을 수 있습니다.

대신 HtmlTextWriter을 시도해 볼 가치가 있습니다. 기본적으로 HTML과 관련된 약간의 도움으로 동일한 작업을 수행합니다. 조금 이상한 무엇

string html; 
using (var sw = new StringWriter()) 
using (var hw = new HtmlTextWriter(sw)) 
{ 
    hw.RenderBeginTag(HtmlTextWriterTag.Tr); 
    hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green"); 
    hw.RenderBeginTag(HtmlTextWriterTag.Td); 
    hw.RenderEndTag(); 
    hw.RenderEndTag(); 
    html = sw.ToString(); 
} 

당신이 Td 태그를 렌더링하기 전에 스타일 속성 를 추가해야한다는 것입니다.

태그 및 스타일 이름에 대해 미리 정의 된 많은 상수로 작업하게되면 좋습니다. 조건부 논리가 필요한 경우 훨씬 더 쉽습니다. StringBuilder

hw.RenderBeginTag(HtmlTextWriterTag.Tr); 
if(makeThisGreen) 
    hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green"); 
if(makeThisBold) 
    hw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold"); 
hw.RenderBeginTag(HtmlTextWriterTag.Td); 
hw.RenderEndTag(); 
hw.RenderEndTag(); 

당신은 당신이 이미 두 번을 작성하지 않았는지 확인하기 위해 style 속성을 시작 여부를 확인해야 할 것이다 두 번째 조건에 도착하면. 그런 다음 해당 조건 중 하나가 사실인지 확인하여 style 속성에 끝 인용 부호를 추가할지 여부를 알 수 있습니다. (또는 당신을 위해 모든 것을 할 수있는 방법을 만들 수 있습니다.)하지만 그 작업은 이미 HtmlTextWriter 클래스에서 이루어집니다.

WriteBeginTag(string)WriteEndTag(string)을 사용하면 태그 작성을보다 명확하게 제어 할 수 있습니다.