スレッド化された/ネストされたコメントシステムを作成する方法を知っている人はいますか? 私が取り組んでいるブログでこれを行う方法を学びたいと思います。私は単にそこに役立つものを見つけることができません。誰かが確かにそれがどのように行われたかを知っているに違いありません.
3 に答える
asp.net が 8 年間使用された後、何百万ものブログで一般的に使用されているスレッド化されたコメントのようなものがどのように行われるかについて、簡単な記事やチュートリアルをわざわざ書いた人は誰もいなかったとは信じがたいことです。検索エンジンはいつものようにゴミしか出さない。繰り返しになりますが、Google は何の役にも立ちません。
これが、asp.net の学習に非常に長い時間がかかる理由です。それが脳外科手術であるということではなく、情報が存在しないために本にある基本的なものを超えることは不可能であるという事実だけです.
私は丸一日かけてこれについて考え、最終的にコメント用の 1 つのテーブル、コメントと返信を別々に処理する 2 つのストアド プロシージャ、インデントされたコメントを正確に表示するためのリストビュー、およびコメント フォーム用の別のリストビューを使用して問題を解決しました。何よりも、スレッドの深さに制限がなく、コメントがキャッシュされます。
コメント データベース テーブルに、ストアド プロシージャで計算された並べ替え値を格納する新しい列を作成しました。コメントの場合、並べ替え値はそれ自身のコメント ID の値と同じに設定され、コメントの返信の場合、その値は、ドットで区切られた独自のコメント ID と連結された親の並べ替え ID と等しく設定されます。ソート ID にドットがない場合、それは最上位のコメントです。1 つのドットは 1 レベルの深さに等しく、2 は 2 レベルの深さに等しいなどです。
そのため、2 つの単純なストアド プロシージャと、ドットの数を取得してインデントに適切な css 値を割り当てるための C# コードを 1 つ書くだけで済みました。外部キー、親子 ID の関係、複雑なコードを含む複数のテーブルは必要ありませんでした。また、実際にフォーラムで回答しようとする少数のユーザーによって一般的に提案されている風変わりな推奨事項も必要ありませんでした。
高速で効率的で、魔法のように機能します。常識のルール!
エディターの提案をしている場合は、WMD:WysiwymMarkdownEditorを使用してみてください。
WMDは、ブログのコメント、フォーラムの投稿、および基本的なコンテンツ管理のためのシンプルで軽量なHTMLエディターです。1行のコードで任意のテキストエリアにWMDを追加できます。さらに1行でライブプレビューを追加します。WMDは、ほとんどすべての最新のブラウザーで機能し、完全に無料で使用できるようになりました。
データモデルに関しては、他の考慮事項の中でも、そのコメントネストの深さを決定する必要があります。
public interface IComment
{
public int ID;
public string Body;
public string OwnerID;
public DateTime CreatedOn;
...
}
ここでナビゲートする必要があるいくつかの問題があることを考慮してください。スパム、登録、スケールなど
事前に構築されたソリューションを活用したい場合は、次のことを検討してください。
Ment-O-Matic - ASP.NET プラットフォームのユーザーは、既存のブログや同様の Web ベースのソフトウェアにコメント機能を簡単に追加できます。警告!.NET 1.1
CodePlex のブログ プロジェクトからインスピレーションを借りてください。