2012-03-09 6 views
1

큰 일련의 html 코드로 리터럴을 초기화하려고합니다. 예를 들어이 잘 작동하고 :여러 줄의 HTML 코드를 사용하는 asp.net literal.text

Literal1.Text.= "<ul><li>home<li/><ul/>";//just fine 

그러나 : 내가 하나 개 이상의 라인이있을 때 가 작동하지 않습니다

:
Literal1.Text.= "<ul><li>home 
       </li></ul>";//error 

내가이되는 간단한 해결책을 알고있다
Literal1.Text.= "<ul><li>home"+ 
       "</li></ul>";//nice but time wasting for many lines 

하지만 : 예를 들어 100 줄을 사용하면 문자열을 연결하는 데 시간을 낭비하고 싶지 않습니다. ution?

Literal1.Text.= "<ul id="nav"> 


<li class="current"><a href="http://www.webdesignerwall.com">Home</a></li> 
<li><a href="http://www.ndesign-studio.com">People</a> 

    <ul> 
     <li><a href="http://www.ndesign-studio.com">Customers</a> 
      <ul> 
       <li><a href="http://www.ndesign-studio.com/portfolio">View</a></li> 
       <li><a href="http://www.ndesign-studio.com/wp-themes">Edit</a></li> 
       <li><a href="http://www.ndesign-studio.com/wallpapers">Print</a></li> 
       <li><a href="http://www.ndesign-studio.com/tutorials">Delete</a></li> 

      </ul> 
     </li> 
     <li><a href="http://www.webdesignerwall.com">Employees</a> 
      <ul> 
       <li><a href="http://www.ndesign-studio.com/portfolio">View</a></li> 
       <li><a href="http://www.ndesign-studio.com/wp-themes">Edit</a></li> 
       <li><a href="http://www.ndesign-studio.com/wallpapers">Print</a></li> 
       <li><a href="http://www.ndesign-studio.com/tutorials">Delete</a></li> 
      </ul> 
     </li> 

    </ul> 
</li> 
<li><a href="#">Quotations</a> 
    <ul> 
     <li><a href="#">Create</a></li> 
     <li><a href="#">Edit</a></li> 
     <li><a href="#">View</a></li> 



    </ul> 
</li> 


<li><a href="#">Invoices</a> 
    <ul> 
     <li><a href="#">Create</a></li> 
     <li><a href="#">Edit</a></li> 
     <li><a href="#">View</a></li> 



    </ul> 
</li> 

<li><a href="#">Receipts</a> 
    <ul> 
     <li><a href="#">Create</a></li> 
     <li><a href="#">Edit</a></li> 
     <li><a href="#">View</a></li> 


    </ul> 
</li> 

<li><a href="#">Statements</a> 
    <ul> 
     <li><a href="#">Create</a></li> 


    </ul> 
</li> 

<li><a href="#">About Us</a></li> 
<li class="style1"><a href="#">Contact Us</a></li> 
</ul>"; 
+0

당신이'대체 할 수 있습니다 "와''\"'[이스케이프 문자] –

+1

당신의 질문에 대한 올바른 대답은 오드드입니다. 어쩌면 다시 생각해야 할 디자인 결정을했다고 생각할 수 없습니다. 그것은 당신이 코드에서 HTML 연결을 많이하는 PHP 세계에서 오는 것처럼 보인다. 닷넷은 * 다른 접근법을 취한다. – NotMe

+1

@dchris 닫기 태그를 수정했습니다. 분명히 당신은 ''이 아닌''을 의미했습니다 ... –

답변

2

, 나는 일반적으로 StringBuilder를 사용 . 그렇게하면 큰 불변 문자열을 연결하는 데 성능 문제가 없습니다.

StringBuilder sb = new StringBuilder(); 

sb.Add("<ul><li>home"); 
sb.Add("</li></ul>"); 

많은 수의 행은 코드에 삽입하지 마십시오. System.IO.File을 사용하여 읽으므로 따옴표를 두 배로 두지 않고 HTML을 편집 할 수 있습니다. 코드를 많이 사용하는 경우 static class을 사용하여 한 번에 읽으므로 많은 여분의 IO 사용을 유발하지 않습니다. 이런 식으로 뭔가 (테스트되지 않은) : 다음

public static class HTMLStringClass 
{ 
    private static string html; 

    public static string GetHtmlString() 
    { 
     if (string.IsNullOrEmpty(html)) 
      html = File.ReadAllText("path/to/file"); 
     return html; 
    } 
} 

그리고이 일을하여 전화 :

의 오디드 대답에 추가
Literal1.Text = HtmlStringClass.GetHtmlString(); 
+1

리소스 문자열을 사용할 수도 있습니다. :) – mgnoonan

+0

C#이 System.IO.File을 인식하지 못합니다. – Dchris

2

사용하십시오 verbatim string literal (@로 시작 하나) :

특히 내 HTML 코드는 folowing는 코드 라인의 소수를 들어

Literal1.Text = @"<ul><li>home 
       </li></ul>"; 
+2

축 어적 문자열 리터럴 내에서 큰 따옴표를 사용할 때 백 슬래시 대신 다른 큰 따옴표 ""를 사용하여 이스케이프 처리합니다. – Dave

+0

@Dave - 또는 HTML 리터럴이므로 작은 따옴표 (''')를 사용하여 속성을 이스케이프 처리 할 수 ​​있습니다. – Oded

관련 문제