2010-06-29 3 views
2

J'utilise ASP.NET MVC2 pour mon projet. Je veux envoyer les messages de confirmation de l'utilisateur après les actions.Passer des messages à l'utilisateur dans MVC2

Idéalement: utilisateur clique sur un lien avec une chaîne de requête (par exemple un lien pour supprimer une entrée) Le contrôleur fait ce que le lien indique, crée le message de réussite, et utilise RedirectToAction pour se débarrasser de la chaîne de requête de l'URL La nouvelle action affiche le message de réussite.

Il a été suggéré que j'utilise une erreur de modèle pour faire cela, mais je ne pense pas que cela fonctionnera dans cette situation.

Merci.

+1

s'il vous plaît ne pas avoir un lien pour supprimer des choses. Que faire si un moteur de recherche l'explore? utilisez un bouton qui affiche un formulaire à supprimer – BritishDeveloper

Répondre

7

Vous pouvez utiliser TempData:

public ActionResult Index() 
{ 
    string message = TempData["message"] as string ?? string.Empty; 
    // send the message as model so that the view can print it out 
    return View("index", message); 
} 

[HttpPost] 
public ActionResult DoWork() 
{ 
    // do some work 
    TempData["message"] = "Work done!"; 
    return RedirectToAction("index"); 
} 

interne TempData utilise session afin de conserver l'information, mais il est automatiquement purgés après la requête suivante, il sera disponible uniquement sur la demande qui suit le stockage.

2

Tout d'abord, N'UTILISEZ PAS DE DEMANDES DE MODIFICATION DE DONNÉES! Imaginez un moteur de recherche indexant votre site et visitant tous les liens de suppression. Deuxièmement, pourquoi l'action cible ne peut-elle pas retourner une vue pour afficher le message de réussite/d'échec?

+0

Est-ce vraiment si mauvais? Vous devez être connecté pour visiter la zone, et l'utilisateur doit être le propriétaire de ce qui est en train d'être supprimé. Je l'ai utilisé pendant un certain temps et n'ai pas eu de problèmes mais maintenant vous me faites me demander lol. J'ai encore beaucoup à apprendre. – smdrager

+0

Oui c'est mauvais, c'est même catastrophique. Il y a des plugins que les gens ont tendance à installer sur leur navigateur. Ces plugins prétendent «améliorer l'expérience de navigation» en indexant le contenu que l'utilisateur est en train de parcourir. Donc pas besoin d'être un moteur de recherche. Ce pourrait être l'utilisateur lui-même sans qu'il le sache. –

+0

Wow. J'utilise ça depuis un moment. Haha .. heh ... ah merde. Ainsi, au lieu de la méthode acceptée serait:

avec un bouton d'envoi ou d'un lien utiliser js pour soumettre le formulaire? – smdrager

2

J'utilise TempData avec un message dans mon fichier Site.master:

<% if (TempData["Error"] != null) 
    { %> 

    <div id="errorMessage"> 
     <%= Html.Encode(TempData["Error"]) %> 
    </div> 
    <% } %> 

    <% if (TempData["Warning"] != null) 
     { %> 

    <div id="warningMessage"> 
     <%= Html.Encode(TempData["Warning"]) %> 
    </div> 
    <% } %> 

Dans mon contrôleur je peux assigner une valeur soit à TempData["Error"] ou TempData["Warning"] et les ont au style différent.

Questions connexes