MVCを使用して簡単なフォーラムを作成しようとしていますが、返信を投稿しているユーザーが重複している理由がわかりません。
返信アクションは次のとおりです。
[HttpPost]
public ActionResult Reply(string Title, string Content,int ReplyTo)
{
Post masterPost = db.Posts.FirstOrDefault(p => p.PostID == ReplyTo);
Post post = new Post();
post.PostID = 0;
post.CreatedOn = DateTime.Now;
post.ModifiedOn = DateTime.Now;
post.ReplyTo = masterPost;
post.Forum = db.Forums.FirstOrDefault(f=>f.ForumID == masterPost.Forum.ForumID);
post.User = (User)Session["User"];
post.Title = Title;
post.Content = Content;
//if (ModelState.IsValid)
//{
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("View", "Posts", new { id = ReplyTo });
//}
return View(post);
}
これはPostエンティティです:
public class Post
{
[Key]
public int PostID { get; set; }
public string Title { get; set; }
[DataType(DataType.MultilineText)]
public string Content { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
public virtual Forum Forum { get; set; }
public virtual User User { get; set; }
public virtual Post ReplyTo { get; set; }
}
これはユーザーエンティティです。
public class User
{
public int UserID { get; set; }
public string Name { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public DateTime RegisteredOn { get; set; }
}
ReplyToアクションが呼び出されるたびに、投稿が作成されますが、セッションに保存されているユーザー(別のユーザーID)も複製されます。
また、ModelState.IsValidについてコメントしました。これは、エンティティが完全に埋められていて、無効になる可能性のあるDataAnnotationsがないにもかかわらず、何らかの理由で常にfalseとして返されるためです。
編集 これはModelStateのエラーです: {"タイプ'System.String'からタイプ'Models.Post'へのパラメーター変換は、タイプコンバーターがこれらのタイプ間で変換できないため失敗しました。"}
私は何が間違っているのですか?
よろしくお願いします。