多数のブログ投稿を次々と表示する ASP.NET ページがあります。ブログの投稿全体を印刷したくはありませんが、[続きを読む] リンクを含む一定の文字数のみを印刷したいと考えています。すべての投稿は、読み込まれた場所からデータベースに html として保存されます。現在、投稿からすべての html タグを取り除き、設定された文字数 (最初の 300 など) を表示していますが、最終的にすべてのスタイルが失われます。タグを取り除かないと、切り捨てられた投稿がさまざまな閉じられていない html タグを取得し、特に IE でページが壊れます。ブログの投稿は、私が制御できない別のシステムを介して入力されます。この問題を克服するには、文字列内の html を取得するメソッドを作成し、すべての開始タグを配列リストに追加し、タグが閉じられるとすぐに配列リストの末尾から削除するため、最後に配列リストには開始タグのみが残ります閉じていないもの。これらのタグを確認し、各タグをその終了タグに置き換えます。次に、これらすべての終了タグを文字列に追加し、その文字列を実際の html 文字列に追加します。文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか? 文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか? 文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか?
質問する
880 次
1 に答える
0
ブログ投稿を生の html として操作しようとするのではなく、ブログ投稿に一貫した構造があると仮定して、ブログ投稿のコンテンツを抽出し、必要に応じて再フォーマットします。
たとえば、ブログがこのように構成されている場合、
<blog>
<title>The blog title</title>
<content>
A bunch of content
</content>
</blog>
次に、ブログを POCO に解析します
public class Blog
{
public string Title { get; set; }
public string Content { get; set; }
}
次に、コンテンツを操作して、必要に応じて再表示します。
<div class="blog-summary">
<h1>@Model.Title</h1>
<p>
@Model.Content.Substring(0, 300)
</p>
</div>
そうすれば、マークアップではなく、ブログのコンテンツの部分文字列のみを取得できます。
于 2013-11-06T21:06:53.360 に答える