如何使用razor DisplayFor格式化mvc页面中的显示文本?

时间:2011-12-05 09:26:46

标签: asp.net-mvc-3 razor

我正在研究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>

但它显示为未格式化的文本,如下所示,

哦,哇哦,哦,哇哦,哦,哇哦,哦。你知道你爱我,我知道你在乎,你会随时喊叫,我会在那里。你是我的爱,你是我的心,我们永远不会分开。我们是一个项目吗?女孩不玩了,我们只是朋友,你在说什么。说另一个,看在我眼前,我的初恋第一次打破了我的心。而我就像...婴儿,婴儿,婴儿oooooh,像婴儿,婴儿,婴儿noooooooo,像婴儿,婴儿,婴儿,ooooh。以为你永远是我的,我的(重复)

如何格式化显示文字? 是否有任何属性可以将其显示为格式化文本?

2 个答案:

答案 0 :(得分:7)

您应该用<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)

答案 1 :(得分:-1)

我在Darin Dimitrov's回答中做了一些更改。它现在工作得很完美..

感谢Darin Dimitrov的帮助。

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);
        }
    }