Messages
私は2つのフォームを持つというアクションを持っています。
最初のフォームは にポストしSendMessage
、2 番目のフォームは にポストしMessagesDelete
ます。どちらのページもReturnToAction
Messages ビューを返し、どちらも 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 } );
}
私が見ることができる唯一の違いはMessagesDelete
、ID を直接送信することですが、SendMessage はそれをモデル内のプロパティとして持っています。