Plusieurs façons:
- Mettez à TempData [ "statusmsg"] et les récupérer à partir de là dans votre action ou une vue. Inconvénients: si l'utilisateur n'a pas cliqué dessus et recharger la page, il ne s'affiche plus.
- Mettez-le en session. Vous ne le supprimerez de la session que lorsque l'utilisateur cliquera sur le lien d'état.
Vous pouvez accéder à TempData/session directement, ou vous pouvez avoir BaseController la propriété StatusMsg et d'autres choses connexes, ou vous pouvez avoir BaseViewModel (classe de base pour tous vos modèles de vue de actions) contiennent cette propriété StatusMsg. En ce qui concerne la barre d'état jQuery, vous pouvez facilement en choisir un sur google, par exemple http://www.west-wind.com/WebLog/posts/388213.aspx, http://plugins.jquery.com/project/positionFooter. Toutefois, si vous voulez le placer sur le dessus, il est beaucoup plus facile, juste quelques lignes de CSS/jQuery: position absolue à 0: 0, largeur 100%, réglez peut-être l'opacité, lorsque vous obtenez msg juste faire
<script>
<% if (Model.StatusMsg != null) %>
$(function(){ $("#statusbar").fadeIn(); });
<% } %>
</script>
OK, c'est plus. Vous avez div id = « msg » et
#msg {
text-align: center;
position: absolute;
line-height: 2em;
left: 0px;
top: 0px;
width: 100%;
display: none;
opacity: 0.7;
background-color: #aaf;
border-bottom: 1px solid black;
}
Vous pouvez fixer l'élément sur le dessus afin qu'il ne défile pas avec page à l'aide http://plugins.jquery.com/project/jQueryFixedPositionPlugin. Maintenant, chaque fois que vous avez un message d'état, vous faites Session ["status"] = "mymessage". Vous pouvez également remplacer BaseController.OnActionExecuted et placer un message dans Session (s'il s'agit de l'application).
Alors à votre avis vous
<script type="text/javascript">
function showstatus(text) {
$("#msg").fadeIn().append("<div>" + text + "</div>");
}
$(function(){
<% if (Session["status"] != null) { %>
var status = '<%= Session["status"] %>';
showstatus(status);
<% ; Session.Remove("status"); } %>
});
</script>
Vous pouvez éviter Session.Remove ("statut") en faisant cela dans la base OnActionExecuting:
{
if (Session["status"] != null)
{
ViewData["status"] = Session["status"];
Session.Remove("status");
}
}
et la référence ViewData au lieu de session dans la vue.
Maintenant, bien sûr, il peut y avoir plus de choses à faire, et le code ci-dessus est hors de ma tête, non testé ... mais si cela ne suffit pas pour faire la chose en 5 minutes, alors prendre le temps de fournir une solution de travail complète testée ...et ne facturera pas d'argent pour cela ;-)
Awesome. Je me taisais, voyant si quelqu'un pouvait parler du TempData. Ça me plait mais je n'étais pas sûr. Deuxièmement, je n'étais pas sûr du plugin jQuery .. donc ça s'appelle positionFooter? kewl. Maintenant, comment est-ce que j'aime un Model.StatusMsg (en supposant qu'il a été ajouté, pour le modèle d'une vue) au positionFooter de jQuery? Le code ci-dessus ne fait que dire de se fondre dedans .. mais pas comment définir son contenu? pouvez-vous juste l'éditer un petit peu, s'il vous plaît? –
parfait. il y a assez d'infos ici pour que je fasse ce shiz. impressionnant. Merci mon pote! –