2

DataListSQLデータベースまたは同様のコントロールにプルされた改行文字を表示する際に問題が発生します。文字を挿入するときに文字を保持していますが、簡単なSELECTステートメントで改行が表示されます。ただし、データをデータリストにプルすると、新しい行ではなくスペースが表示されます。現在、コードは次のようになっています。

<asp:Label ID="CommentLabel" runat="server" Text='<%# Eval("Comment").ToString().Replace(Environment.NewLine, "<br />") %>' />

使用するための推奨事項Server.HTMLEncodeも確認しましたが、そのような状況での使用例はありません。次のような目に見える違いはありません。

<asp:Label ID="CommentLabel" runat="server" Text='<%# Server.HTMLEncode(Eval("Comment").ToString()).Replace(Environment.NewLine, "<br />") %>' />

ここでパズルのピースが欠けていますか?

編集:新しい行は、複数行のテキストボックス内のEnterキーを使用して作成されます。含まれている文字とは異なる文字になるかどうかはわかりませEnvironment.Newlineんが、生成されたHTMLには<span>、適切な改行が入ったタグが表示されますが、タグは表示されない<br />ため、異なると思います。もしそうなら、置き換えるのに適切なキャラクターは何ですか?

EDIT2:アイテムテンプレートのコード

<ItemTemplate>
    <tr style="font-weight:bold">
        <td>
            Comment ID: <asp:Label ID="CommentIDLabel" runat="server" Text='<%# Eval("CommentID") %>' />
            Commenter: <asp:Label ID="CommenterLabel" runat="server" Text='<%# Eval("Username") %>' />
            Comment Date: <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
        </td>
    </tr>
    <tr>
        <td>
            <asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(Environment.NewLine, "<br />") %>' />
        </td>
    </tr>
</ItemTemplate>
4

2 に答える 2

2

Augustin Merilesがコメントで述べたように、問題は、複数行のテキストボックス内でEnterキーを押すと、に含まれる改行文字が使用されないという事実にありますEnvironment.NewLine。それを調べた人の中には、を使用するのではなく、書き込みvbCrをしていることが明らかになりました。それを知って、私の置換メソッドを変更するとそれが修正されました。vbLfvbCrLf

<asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(vbCr, "").Replace(vbLf, vbCrLf).Replace(Environment.NewLine, "<br />") %>' />

これにより、ビュー全体で認識された均一な改行が実現されました。

于 2013-03-05T19:56:05.277 に答える
0

あなたのページによって生成されたhtmlコードを見てください、あなたはこのようなものを見るでしょう:

<table id="GridView1">
<tr>
<td>
hello<br/>hello
</td>
</tr>
</table>

ただし、グリッドビュー(または他のコントロール)の列タイプをテンプレートフィールドに変換すると、次のように表示されます。

<table id="GridView1">
<tr>
<td>
 <span id="GridView1_Label1_0">hello <br/>hello</span>
</td>
</tr>
</table>

そして今、それに改行があります!つまり、全体として、列をテンプレートフィールドに変換するだけで済みます。

于 2013-03-05T16:09:56.167 に答える