1

mvcでウェブログを作成しようとしています。最初にEFでデータベースコードを作成しました。これで、ページごとに1つの投稿を表示できるページができました。以下に、投稿に対するすべてのコメントを表示します。それはすべてうまく機能しています。しかし、今度は同じページにコメントの作成機能を作成したいと思います。

これを行う方法がわかりませんか?これは、ビューでモデルとして設定した「post」オブジェクトではなく、新しいオブジェクト「comment」を作成する必要があるためです。だから私は私の見解で異なるモデルを持っていますか?それは不可能だと思いますよね?たぶん、リスト<>としてコメントが含まれているので、「投稿」モデルを使用できますか?

これには部分ビューを使用する必要がありますか、それともモデルビューを使用する必要がありますか?

私が何を意味し、私が何を達成しようとしているのかをあなたが知っていることを願っています。助けが必要な場合は事前にTnx!

4

3 に答える 3

1

Postモデルにが含まれている場合List<Comment>は、もちろんそれを使用できます。そのルートをたどったとしても、ViewModelを使用してすべてのモデルオブジェクトをラップすることは決して悪い考えではありません。

単に保守性のために、ページにレンダリングされたさまざまなモデルに部分的なビューを使用しますが、それは純粋に個人的な好みの問題です。

于 2012-05-18T19:02:27.827 に答える
0

投稿には、ある種のコメントコレクションが必要です。モデルにバインドされていないフォームを追加するだけでよいはずです。あなたのコントローラーには、あなたが持っていますcollection、それからデータを引き出すだけです。

私が言いたいのは:あなたの見解では、あなたは次のようなものを持っているでしょう

@Html.TextArea("CommentText")

コントローラ内:

public ActionResult Create(FormCollection collection) {
  string commentText = collection["CommentText"];
  Post p = ... ; // Not familiar with EF
  p.Comments.Add(new Comment(commentText));
  p.Save(); // ActiveRecord style, not sure about EF
}

それはかなり簡単なはずです。NHibernateでActiveRecordを使用しているので、EntityFrameworkについて具体的にはわかりません。行き詰まった特定の問題はありましたか?

于 2012-05-18T19:02:42.697 に答える
0

はい、部分ビューを使用してそれを行うことができます。サーバーにコメントを投稿する部分ビューを作成します。コメントリストの下にこの部分ビューを表示します。ユーザーがコメントを投稿したら、json呼び出しを介して送信し、成功したらコメントのhtml文字列を作成してコメントリストに追加します。このようにして、モデル全体をリロードすることなく、コメントが投稿され、コメントリストにロードされます。

于 2012-05-18T20:23:31.430 に答える