ASP中的HTML:直言不讳:它试图帮助太多

时间:2009-05-13 19:15:53

标签: asp.net

编辑:更新以更清晰。

我有一个无序的项目列表,我需要进行本地化。而不是包装每个列表项的文本 - 在数百个< li> s的过程中,可能会杀了我 - 我决定包装< ul>在字面上。这样,我就可以在资源文件中抛出“text”属性进行本地化。

然而,asp.net认为我的代码中的每个换行符都应替换为< br />。有没有一个属性或方法可以解决这个问题,除了在文本中替换每个\ n之外什么都没有?我尝试了Mode =“PassThrough”,这似乎没什么区别。

我暂时在< ul>的显示内部显示所有< br />在我的css中没有,但感觉很乱。我宁愿它根本不渲染< br /&gt ;.

代码:

<asp:Literal id="literal" runat="server">
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        ...
        <li>Item 50</li>
    </ul>
</asp:Literal>

它给了我什么:

<ul>
<br />
    <li>Item 1</li>
    <br />
    <li>Item 2</li>
    <br />
    ...
    <br />
    <li>Item 50</li>
    <br />
</ul>

2 个答案:

答案 0 :(得分:5)

&lt; asp:Literal Mode =“PassThrough”&gt;&lt; / asp:Literal&gt;

来自MSDN:

PassThrough :不会修改控件的内容。

编码:控件的内容将转换为HTML编码的字符串。

转换:从控件的内容中删除不支持的标记语言元素。如果在支持HTML或XHTML的浏览器上呈现Literal控件,则不会修改控件的内容。

答案 1 :(得分:0)

如何使用PlaceHolder控件呢?

您可以通过编程方式将文本添加到PlaceHolder控件中,如下所示:

this.MyPlaceHolderControl.Controls.Add(new LiteralControl(GetLocalizedResource()));

请注意,这使用的是LiteralControl,而不是Literal,这不会对您的内容采取任何措施。

这对你有用吗?