在视图中显示字符串?

时间:2016-04-15 12:19:19

标签: c# asp.net-mvc razor

是的,有很多像这样的问题,但奇怪的是没有答案似乎对我有用。

我的模型中有一个描述字段,我想在某些视图中截断,因此在我的模型中截断元素的不同上下文对我来说似乎有点过分了。

        @{ 
            string description = item.Description;
            if (description.Length > 10)
            {
                description = description.Substring(0, 10) + "...";
            }
            //Using HtmlString
            var s = new HtmlString(description);
            s;
            //Using Html.Raw
            Html.Raw(description);
            //Using Html.Display
            Html.Display(description); 
        }

无论我尝试什么,都会导致错误或根本不显示任何内容。如果我在语句之后放置一个断点,我的字符串就像我想要的那样,我只需要在我的<td>元素中显示它。

2 个答案:

答案 0 :(得分:3)

@块中使用Html会返回MvcHtmlString,但您不会在HTML中引用它。

@{ 
    string description = item.Description;
    if (description.Length > 10)
    {
        description = description.Substring(0, 10) + "...";
    }

    Html.Raw(description); // Doesn't print in html. You are returning to nothing
    // var myStr = Html.Raw(description);
}

@Html.Raw(description) // Print in html

或者您可以在@

之前添加Html.Raw(description)
@{ 
    string description = item.Description;
    if (description.Length > 10)
    {
        description = description.Substring(0, 10) + "...";
    }

    Html.Raw(description); // Doesn't print in html. You are returning to nothing
    // var myStr = Html.Raw(description);

    @Html.Raw(description) // Print in html
}

答案 1 :(得分:1)

您在代码中包含了显示方法,这就是您遇到问题的原因。你应该把Html.Raw放在代码块之外。

你的代码应该是这样的:

@{
    string description = "sdasdasdasdasdas dasd asdasd asd";
    if (description.Length > 10)
    {
        description = description.Substring(0, 10) + "...";
    }
}

@Html.Raw(description)