2012-12-19 8 views
6

indietro sto usando TempData di trasmettere messaggi aggiuntivi per mostrare una notifica attraversavano richieste:MVC3 TempData esiste quando si clicca il pulsante

public ActionResult Address() 
      TempData["NotificationType"] = "error"; 
      TempData["NotificationMessage"] = "There was an error updating the address."; 
      return RedirectToAction("Index", "Home"); 
    } 

    public ActionResult Index() 
    {   

     if (TempData["NotificationType"] != null && TempData["NotificationMessage"] != null) 
     { 
      model.NotificationMessage = TempData["NotificationMessage"].ToString(); 
      model.NotificationType = TempData["NotificationType"].ToString(); 
     } 
    return View(); 
    } 

Indice Vista:

<div id="NotificationType" data-notification_type="@Model.NotificationType"/> 
<div id="NotificationMessage" data-notification_message="@Model.NotificationMessage" /> 

<script type=text/javascript> 
if($('#NotificationType').data('notification_type') == 'error'){ 
    Notify('error', "Error!", $('#NotificationMessage').data('notification_message')); 
    } 
</script> 

ho quindi visualizzare la notifica di errore in la vista e funziona benissimo. Il mio problema arriva dopo che se faccio clic su un altro collegamento e poi preme il pulsante Indietro nel browser, la notifica viene nuovamente visualizzata.

C'è un modo per impedire la rivisualizzazione della notifica?

MODIFICA: Sembra proprio perché memorizza nella cache la vista indice in quanto non ha colpito un punto di interruzione nell'azione quando premo il pulsante Indietro.

risposta

11

risolto questo, impedendo la memorizzazione nella cache in vista indice:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult Index() 
+0

Dopo ore di ricerca finalmente trovato la soluzione giusta. Grazie compagno. –

Problemi correlati