如何在asp.net mvc中显示Post的前200个字符
本文关键字:Post 显示 的前 200个 字符 mvc asp net | 更新日期: 2023-09-27 18:02:51
<div class="panel-body">@Html.Raw(item.PostContent.Substring(0, 200))</div>
上面的代码产生错误!当我将鼠标悬停在item.PostContent
上时,它告诉我它是字符串!
<div class="panel-body">@Html.Raw(item.PostContent)</div>
可以很好地显示整个帖子的内容!我该怎么做才能解决这个问题?我想获取一篇文章的前200个字符,并将它们作为摘录显示。
下面的内容可能会有用。
public static class HtmlPostExtensions
{
public static IHtmlString Post(this HtmlHelper helper, string postContent)
{
string postStr = postContent;
if (postStr.Length > 200)
{
postStr = postStr.Substring(0, 200);
}
return MvcHtmlString.Create(postStr);
}
}
可以用作
@Html.Post(item.PostContent)
@if (!string.IsNullOrEmpty(item.PostContent) && item.PostContent.Length > 200)
{
<span>@Html.Raw(item.PostContent.Substring(0, 200))</span>
}
else
{
<span>@Html.Raw(item.PostContent)</span>
}
检查length是否大于200并截断,否则直接使用length
<div class="panel-body">@Html.Raw(item.PostContent.Substring(0, item.PostContent.Length > 200 ? 200 : item.PostContent.Length))</div>
如果可能的话,你应该在传递给视图之前在action方法中这样做。这将使razor代码/标记更加清晰。它可以在投影模型时完成[think LINQ]
文章的内容是html格式的。因此,首先我需要得到平面该HTML源的文本然后获得前200个字符。任何解决方案?
您必须首先解析动作中的内容以获得所需的内容,然后根据需要进行截断。不要给视图添加太多的复杂性。
你可以使用Html敏捷包(NuGet htmllagilitypack 1.4.9.5)来解析内容并提取该Html的普通测试,然后获得前200个字符
var html = new HtmlDocument();
html.LoadHtml(item.PostContent);
var root = html.DocumentNode;
var postContent = root.InnerText;
var postLength = postContent.Length;
var truncatedContent = postContent.Substring(0, postLength > 200 ? 200 : postLength);
同样,这应该在向View发送项之前完成。