シナリオ 私は、許可されたユーザーのみが新しい投稿を更新し、投稿にコメントできるasp.net MVC 3を使用して、管理パネルにフォーラムを構築しようとしています。以下は、PostsController のコメント機能です。
[Authorize]
public ActionResult Comment(int id, string name, string email, string body)
{
Post post = GetPost(id);
Comment comment = new Comment();
User CurrentUser = repository.GetUser(User.Identity.Name);
comment.UserID = CurrentUser.ID;
comment.Post = post;
comment.DateTime = DateTime.Now;
comment.Name = User.Identity.Name;
comment.Email = email;
comment.Body = body;
model.AddToComments(comment);
model.SaveChanges();
return RedirectToAction("Details", new { id = id });
}
問題: ログオンしていないユーザーが投稿にコメントすると、ページがログイン ページにリダイレクトされ、承認されたアクセスでログオンした後、コメント フォームの投稿値がコメント アクションによって識別されません。コメントフォームのコードは次のとおりです。
<form action="@Href("~/Posts/Comment/" + post.ID)" method ="post">
<input type="text" id="commentNamePrompt" name="name" />
Name (required)
<br />
<input type="text" id="commentEmailPrompt" name="email" />
Email (optional)
<br />
<textarea id="commentBodyInput" name="body" rows="10" cols="60"></textarea>
<input type="submit" id="commentSubmitInput" name="submit" value="Submit!" />
</form>
エラー
This property cannot be set to a null value.
試してみました: 最初にサイトにログインして投稿にコメントしてみましたが、正常に動作します。ログインページとの間でリダイレクトされた後にモデルの投稿値が渡されなかったためにエラーが発生したと確信しています。許可されていないユーザーがコメントフォームの投稿値を更新して、許可されたページにリダイレクトするにはどうすればよいですか。