SQL 데이터베이스에서 DataList
또는 유사한 컨트롤로 끌어온 새 줄 문자를 표시하는 데 문제가 있습니다. 문자를 삽입하면 문자가 보존되므로 빠른 SELECT
문에 줄 바꿈이 표시됩니다. 그러나 데이터를 데이터리스트로 가져 오면 새 라인이 아닌 공백이 표시됩니다. 코드는 현재 다음과 같습니다 : 그것은이에바운드 레이블에 SQL에서 줄 바꿈 표시
<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 />") %>' />
여기 퍼즐이 없습니다.
EDIT : 여러 줄 입력란 안에 Enter를 통해 새 줄이 만들어집니다. 나는 그 문자가 Environment.Newline
에 포함 된 것보다 다른 문자를 만들지는 모르겠지만 생성 된 HTML은 <span>
태그 안에 적절한 줄 바꿈이 있지만 <br />
태그가 없으므로 다른 것으로 추측합니다. 그렇다면 대체 할 적절한 캐릭터는 무엇입니까?
<table id="GridView1">
<tr>
<td>
hello<br/>hello
</td>
</tr>
</table>
하지만합니다 (있는 GridViews을 변환 할 경우 또는 기타 :
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>
코드에서 생성하는 HTML이 무엇인지 확인 했습니까? –
줄 바꿈이 표시되지만
으로 바뀌지 않습니다. 그것은 이전에 텍스트 상자에서 엔터 키로 구분이 이루어지고 생성 된 문자가'Environment.NewLine'에 포함되지 않아서'.Replace'가 누락되기 때문입니다. – Crimius
분명히 문제는 데이터베이스에서 검색하는 문자열에'Environment.NewLine'이 나타내는 형식으로 줄 바꿈 문자가 없다는 것입니다. 검색된 문자열을 복사하거나 디버거에서 해당 내용을보고 어떤 문자가 NewLine을 나타내는 지 확인할 수 있습니다. 전혀 없을지도 모른다. –