2009-05-13 11 views
1

編集:もっと分かりやすくするために更新しました。ASPのHTML:リテラルの頭痛:あまりにも助けようとします

私はローカライズする必要がある項目の順序のないリストを持っています。 <li>の何百もの間に、おそらく私を殺すだろう - 各リスト項目のテキストをラップするのではなく、<ul>をリテラルにラップすることに決めました。このようにして、ローカライゼーション用のリソースファイルに "text"属性をスローすることができます。

しかし、asp.netはコード内の各行区切りを< br/>に置き換える必要があると考えています。テキストの中の各\ nを何も置き換えずに、私が脳波でつけているプロパティや方法がありますか?私はMode = "PassThrough"を試してみましたが、それは違いがないようです。

私は一時的に<UL>のディスプレイの内部すべて< BR/>秒行った:私のCSSのどれもが、それはハック感じています。私はむしろ、< br/>をレンダリングしないでください。

コード:

<asp:Literal id="literal" runat="server"> 
    <ul> 
     <li>Item 1</li> 
     <li>Item 2</li> 
     ... 
     <li>Item 50</li> 
    </ul> 
</asp:Literal> 
それは私を与える何

:代わりに、PlaceHolderコントロールを使用する方法について

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

答えて

0

どのように?

次のようなPlaceHolderコントロールにプログラム的にテキストを追加することができます。

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

注これはあなたのコンテンツに何の行動を取るべきではありませんLiteralControl、ないLiteralを、使用していること。

これは機能しますか?

+0

コントロール間に折り返しが必要な場合やパネルに何も表示されない場合(サンプル内にリテラルは必要ありません) –

+0

リソースファイルに入れることのできる種類の「text」属性に直接アクセスする必要があります。 –

+0

もっと説明できますか?どのような "テキスト"が必要ですか? –

5

< ASP:MSDNから>

リテラル:リテラル・モード= "パススルー" > </ASP

パススルー:コントロールの内容は変更されません。

エンコード:コントロールの内容がHTMLエンコードされた文字列に変換されます。

変換:サポートされていないマークアップ言語要素は、コントロールの内容から削除されます。リテラルコントロールがHTMLまたはXHTMLをサポートするブラウザでレンダリングされる場合、コントロールの内容は変更されません。

+0

私はパススルーを試みましたが、何の違いも見られませんでした。 それにリテラルと litTest.Text =との単純なページで自分のマシンで –

+3

、 "

    \ nは
  • テスト1
  • \ nは
  • テスト2
  • \ nは
\ N \ N"; Page_Loadには、
タグがパススルーまたはトランスフォーム(デフォルト)モードで挿入されていません。 おそらく、どこかにstring.replace( "\ n"、 "
")がありますか? –

関連する問題