Voici mon script:
<%
if (TempData["Resultat"] != null){
%>
<script type="text/javascript">
alert('<%: TempData["Resultat"]%>');
</script>
<%
}
%>
Dans ce cas, une fenêtre contextuelle s'affiche avant le chargement de la page, mais je souhaite qu'elle s'affiche une fois la page entièrement chargée. en Html, cela ressemble à ceci:
<body onload="happycode() ;">
mais je ne peux pas l'utiliser dans MVC j'ai une page maître pour toute mon application web
Si vous pouvez utiliser jquery, vous pouvez placer l'alerte dans la fonction $(document).ready()
. cela ressemblerait à quelque chose comme ceci:
<script>
$(document).ready(function(){
alert('<%: TempData["Resultat"]%>');
});
</script>
Pour inclure jQuery, incluez les éléments suivants dans le <head>
tag de votre code:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
Voici un exemple rapide dans jsFiddle: http://jsfiddle.net/ChaseWest/3AaAx/
Il y a trois façons.
La première consiste à placer la balise de script au bas de la page:
<body>
<!--Body content-->
<script type="text/javascript">
alert('<%: TempData["Resultat"]%>');
</script>
</body>
La deuxième façon consiste à créer un événement onload:
<head>
<script type="text/javascript">
window.onload = function(){//window.addEventListener('load',function(){...}); (for Netscape) and window.attachEvent('onload',function(){...}); (for IE and Opera) also work
alert('<%: TempData["Resultat"]%>');
}
</script>
</head>
Il exécutera une fonction lors du chargement de la fenêtre.
Enfin, la troisième méthode consiste à créer un événement readystatechange
et à vérifier le document.readystate actuel:
<head>
<script type="text/javascript">
document.onreadystatechange = function(){//window.addEventListener('readystatechange',function(){...}); (for Netscape) and window.attachEvent('onreadystatechange',function(){...}); (for IE and Opera) also work
if(document.readyState=='loaded' || document.readyState=='complete')
alert('<%: TempData["Resultat"]%>');
}
</script>
</head>
Pourquoi ne pouvez-vous pas l'utiliser dans MVC?
Plutôt que d'utiliser la méthode de chargement du corps, utilisez jQuery et attendez la fin de la fonction de document.
Avec l'utilisation de jQuery pour gérer l'événement prêt pour le document,
<script type="text/javascript">
function onLoadAlert() {
alert('<%: TempData["Resultat"]%>');
}
$(document).ready(onLoadAlert);
</script>
Ou, encore plus simple - mettez le <script>
à la fin de body
, pas dans le head
.
$(window).on('load', function () {
alert('Alert after page load');
}
});
Ajoutez le code ci-dessous dans l'événement PageLoad
:
ScriptManager.RegisterStartupScript(Page, this.GetType(), "myScript", "alert('OK Done.');", true);