1

多数のブログ投稿を次々と表示する ASP.NET ページがあります。ブログの投稿全体を印刷したくはありませんが、[続きを読む] リンクを含む一定の文字数のみを印刷したいと考えています。すべての投稿は、読み込まれた場所からデータベースに html として保存されます。現在、投稿からすべての html タグを取り除き、設定された文字数 (最初の 300 など) を表示していますが、最終的にすべてのスタイルが失われます。タグを取り除かないと、切り捨てられた投稿がさまざまな閉じられていない html タグを取得し、特に IE でページが壊れます。ブログの投稿は、私が制御できない別のシステムを介して入力されます。この問題を克服するには、文字列内の html を取得するメソッドを作成し、すべての開始タグを配列リストに追加し、タグが閉じられるとすぐに配列リストの末尾から削除するため、最後に配列リストには開始タグのみが残ります閉じていないもの。これらのタグを確認し、各タグをその終了タグに置き換えます。次に、これらすべての終了タグを文字列に追加し、その文字列を実際の html 文字列に追加します。文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか? 文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか? 文字列に開始タグを追加するとき、/> を含むすべてのタグを無視して、自己終了タグを回避します。これは私のために仕事をしていますが、html文字列は予測できないため、私の方法はバグになりがちです。この問題を回避するより良い方法はありますか?

4

1 に答える 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 に答える