Новая строка в текстовой области в DetailsView (asp.net)

Я только что обновил страницу, чтобы использовать DetailsView в asp.net. Он включал текстовое поле MultiLine, которое теперь находится в EditItemTemplate представления сведений. Проблема в том, что при выводе этих данных (которые хранятся в базе данных) я заменял vbCrLf (константа новой строки --> VB, возврат каретки, перевод строки) на ‹br/›, который раньше работал нормально, но теперь что это в подробном представлении, похоже, что vbCrLf не существует, и после замены (str, vbCrLf, "‹br/›") вместо разрыва HTML (‹br/›), где текстовое поле имело разрывы строк , все это просто отображается в одной строке. Как я могу это исправить? Спасибо.


person Ryan    schedule 24.07.2009    source источник


Ответы (5)


Вместо этого попробуйте Environment.NewLine

person drs9222    schedule 24.07.2009
comment
спасибо за предложение, но это тоже не работает. Линк заменяет его чем-то другим? Поскольку текстовая область, кажется, все еще знает, что разрыв строки есть, но замена vbCrLf, Environment.NewLine и т. д. и т. д., похоже, не знает о нем. - person Ryan; 27.07.2009
comment
Я не знаю, сделал бы linq что-нибудь подобное. Я только что сделал быстрый тест, где я прочитал значение, сделал замену и вывел новое значение, и это сработало просто отлично. Возможно, вам следует попробовать выполнить отладку на обоих концах, чтобы увидеть фактическое значение строки. - person drs9222; 27.07.2009

Установите для htmlEncode значение false

person David    schedule 24.07.2009
comment
Я попытался просмотреть все задействованные элементы управления и нигде не вижу свойства htmlEncode. - person Ryan; 24.07.2009

если вы берете данные из базы данных, которые содержат новые строки, то просто оставьте их там, и textArea будет работать нормально... вам не нужно делать замену на "‹BR/›"... вы нужно сделать это только в том случае, если вы помещаете текст на страницу в формате HTML... но пытаетесь заполнить элемент управления вводом, поэтому, если вы не делаете что-то еще непонятное, вам не нужно сделать замену

person Nick Franceschina    schedule 24.07.2009
comment
Эй, извините, если я не ясно... Я вывожу эти данные в другом месте. Он отлично работает, когда я возвращаю его в текстовую область. Там есть разрывы строк. Когда я вывожу в HTML в другом месте (не в текстовой области), я делаю замену на ‹br/›, но не нахожу vbCrLf - person Ryan; 24.07.2009

С помощью элемента управления textarea длинные тексты выглядят так, как будто у них есть разрывы строк, но иногда у них нет разрывов строк. Если текст достигает длины текстовой области, он продолжается на второй строке, но не содержит разрыва строки. Если пользователь нажмет Enter, к вашему контенту будет добавлен новый разрыв строки.

Я думаю, вы упускаете этот момент.

Надеюсь, поможет.

person Canavar    schedule 24.07.2009
comment
Нет, я полностью понимаю этот момент... это противоположно моему вопросу. Я хочу получить разрывы строк, которые вводит пользователь. Например, когда пользователь вводит строку 1 (нажимает возврат), строку 2... Я хочу заменить эти разрывы строк разрывами строк HTML (‹br/›) при выводе на страницу. Я знаю, что текст будет переноситься по словам, это не проблема. - person Ryan; 24.07.2009
comment
Как я уже сказал, он работал нормально до того, как был в DetailsView, но по какой-то причине в представлении Details, похоже, меняется символ vbCrLf (который я заменил на ‹br/›, и это именно то, что я хотел) с некоторыми другой символ разрыва строки, который не является vbCrLf и поэтому не заменяется на ‹br/› при выводе на страницу. - person Ryan; 24.07.2009

Я всегда заменял код символа — chr(10) в VB.NET — на ‹br /›, чтобы показать разрывы строк. Попробуй?

person zakster82    schedule 24.07.2009
comment
Привет, как заменить код символа? Я попытался заменить (stringField, char (10), ‹br/›), но он говорит, что char — это тип, который нельзя использовать в качестве выражения. - person Ryan; 27.07.2009
comment
zakster82 сказал chr(10), а не char(10). Я лично использую С#, поэтому я не уверен в этом, но я считаю, что chr - это старая функция vb для преобразования целого числа в символ ascii. Я не уверен, существует ли он в VB.NET. Поскольку я также не уверен, используете ли вы VB.NET или C#, я бы предложил что-то вроде System.Convert.ToChar(10), которое, я думаю, будет работать в любом из них. - person drs9222; 27.07.2009