asp.net literal.text使用多行html代码

时间:2012-03-09 15:45:38

标签: asp.net string html literals

我正在尝试使用大量的html代码初始化文字。 例如,这工作正常:

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行时,我不想花时间连接字符串。还有更实用的解决方案吗?

具体来说,我的HTML代码如下:

    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>";

2 个答案:

答案 0 :(得分:2)

使用verbatim string literal(以@开头的那个):

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

答案 1 :(得分: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();