Как отформатировать отображаемый текст на странице MVC с помощью бритвы DisplayFor? - PullRequest
1 голос
/ 05 декабря 2011

Я работаю над приложением asp.net mvc3.

В этом пользователь может публиковать данные, я использую textarea для ввода. Эти данные хранятся в базе данных, и я извлекаю их, используя razor @ Html.DisplayFor ().

Мои данные для textarea похожи на это (введено пользователем)

Oh woooah, oh woooooah, oh wooooah, oh.
You know you love me, I know you care,
you shout whenever and I’ll be there.
You are my love, you are my heart
and we will never ever ever be apart.
Are we an item? girl quit playing,
we’re just friends, what are you saying.
Said there’s another, look right in my eyes,
my first love broke my heart for the first time.
And I was like…


Baby, baby, baby oooooh,
like baby, baby, baby noooooooo,
like baby, baby, baby, ooooh.
Thought you’d always be mine, mine (repeat)

и когда я получаю его с помощью этого,

<em>@Html.DisplayFor(model => item.inputvalue)</em>

но он отображается в виде неформатированного текста, как показано ниже,

О, ууууууууууууууууууууууууууууууууууууууХу,, х,,,,, да Вы знаете, что любите меня, я знаю, что вы заботитесь, вы кричите, когда я буду там. Ты моя любовь, ты мое сердце, и мы никогда не будем никогда друг от друга. Мы предмет? девушка перестала играть, мы просто друзья, что ты говоришь? Сказал, что есть еще один, посмотрите мне в глаза, моя первая любовь впервые разбила мне сердце. И я был как ... Детка, детка, детка ооооо, как ребенок, детка, детка noooooooo, как детка, детка, детка, ооооо. Думаю, ты всегда будешь моей, моя (повторяю)

Как я могу отформатировать отображаемый текст? Есть ли свойство отображать это как форматированный текст?

Ответы [ 2 ]

7 голосов
/ 05 декабря 2011

Вы должны заменить новые строки на <br/>.Вы можете написать специальный помощник для этого:

public static class HtmlExtensions
{
    public static IHtmlString DisplayFormattedData(this HtmlHelper htmlHelper, string data)
    {
        if (string.IsNullOrEmpty(data))
        {
            return MvcHtmlString.Empty;
        }

        var result = string.Join(
            "<br/>", 
            data
                .Split(new[] { Environment.NewLine }, StringSplitOptions.None)
                .Select(htmlHelper.Encode)
        );
        return new HtmlString(result);
    }
}

, а затем:

@Html.DisplayFormattedData(item.inputvalue)
0 голосов
/ 06 декабря 2011

Я внес несколько изменений в ответ Дарина Димитрова . Теперь он работает идеально ..

Спасибо Дарин Димитров за помощь.

public static class HtmlExtensions

    {
        public static IHtmlString DisplayFormattedData(this HtmlHelper htmlHelper, string data)
        {
            if (string.IsNullOrEmpty(data))
            {
                return MvcHtmlString.Empty;
            }

            string myString=data;
                myString = myString.Replace("\n", "<br>");

                return new HtmlString(myString);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...