Messages
という2つのフォームを持つアクションがあります。TempData 1つのページに永続的に永続化する
最初のフォームはSendMessage
に、2番目の投稿はMessagesDelete
に送信されます。両方のページは、メッセージビューのReturnToAction
を返し、両方ともTempDataを使用して、アクションが発生したことを示すフィードバックデータ(送信メッセージ、メッセージが削除されたなど)を返します。
MessagesDelete
は正常に動作し、TempDataを初めて返すだけで、その後の要求で削除されます。一方、SendMessage
は、TempDataを無限に持続します。
ここにいくつかの簡単なコードがあります。
[Authorize]
public ActionResult Messages(int? id, string message)
{
MessagesModel model = new MessagesModel();
// build model data here
return View(model);
}
[Authorize]
[HttpPost]
public ActionResult MessagesDelete(int[] selectedObjects, int? id)
{
// delete objects
TempData["MessagesDeleted"] = selectedObjects.Count() + " deleted";
return RedirectToAction("Messages", new { id = id });
}
[Authorize]
[HttpPost]
public ActionResult SendMessage(SendMessageModel model)
{
// send my message
TempData["MessageSent"] = "message sent!";
return RedirectToAction(model.action, new { id = model.action_id });
}
私が見ることができる唯一の違いは、のSendMessageは、モデル内のプロパティとして有する一方MessagesDelete
は、直接IDを送信するということです。
あなたのSendMessage ...アクションメソッドでは、どのアクションメソッドがリダイレクトされていますか?...それは... "return return RedirectToAction(model.action、new {id = model.action_id}); "...あなたは、そのアクションメソッドのコードを投稿することができます...私たちにもっと役立つかもしれません... – NiK
私はあなたのSendMessageModelクラスのアクションプロパティの名前を変更しようとするかもしれません。私はプロパティのこの名前のクラスを持っていたと私はモデルバインディングで私のための問題を引き起こして覚えている。私はそれが何であったかを覚えていませんが、今私はそれを文書化したいと思っています... – ngm