我有一个名为的动作Messages
,它有两种形式。
第一个表单发布到SendMessage
,第二个发布到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 将其作为模型中的属性。