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

Jac*_*son 1 asp.net

编辑:更新以获得更清晰.

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

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

我暂时在<ul>的显示内部完成了所有内容:在我的CSS中没有,但它感觉很乱.我宁愿它根本不渲染<br />.

码:

<asp:Literal id="literal" runat="server">
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        ...
        <li>Item 50</li>
    </ul>
</asp:Literal>
Run Code Online (Sandbox Code Playgroud)

它给了我什么:

<ul>
<br />
    <li>Item 1</li>
    <br />
    <li>Item 2</li>
    <br />
    ...
    <br />
    <li>Item 50</li>
    <br />
</ul>
Run Code Online (Sandbox Code Playgroud)

Ari*_*yck 5

<asp:Literal Mode ="PassThrough"> </ asp:Literal>

来自MSDN:

PassThrough:不修改控件的内容.

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

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

  • 在我的机器上,有一个带有文字的简单页面和litTest.Text ="<ul> \n <li>测试1 </ li> \n <li>测试2 </ li> \n </ ul> \n \n"个; 在Page_Load中,我没有看到在Passthrough或Transform(默认)模式下插入<br />标签.你可能在某处有一个string.replace("\n","<br />")吗? (3认同)