2009-09-24 4 views
1

J'ai une application ASP.net avec une page ASPX.Comment appeler javascript dans l'événement onload d'une page enfant

Dans Page_Load événement de la page aspx, je gère un code qui est basé sur la valeur d'une variable cachée du javascript (affectation du résultat de javascript à la variable cachée).

J'appelle le javascript dans Page_Load de la page enfant, et dans la déclaration immédiate, j'utilise la valeur de la variable cachée pour le traitement. Lorsque j'accède à une valeur de variable cachée, je ne reçois que la valeur par défaut.

S'il vous plaît me suggérer de gérer le scénario. J'ai besoin d'exécuter le javascript et obtenir le résultat dans la variable cachée. Les deux doivent avoir lieu dans Page_Load événement seulement.

Déclaration variable cachée:

<asp:HiddenField runat='server' ID='hdnDate' Value='0' /> 

javscript:

function getCDate() { 
    var nowDate = new Date(); 
    var curr_month = nowDate.getUTCMonth(); 
    curr_month ++; 
    var dt = curr_month + "/" + nowDate.getUTCDate() + "/" +nowDate.getFullYear()+ " " + nowDate.getUTCHours()+":" +nowDate.getUTCMinutes()+":" +nowDate.getUTCSeconds(); 
    document.getElementById("ctl00_ContentPlaceHolder1_hdnDate").value = dt;   
    return true; 
} 

méthode Page_Load dans le code behind:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "getCDate();", true); 
    DateTime dt=Convert.ToDateTime(hdnDate.Value); 
    dt.AddDays(10); //getting error here because dt contains01/01/0001  
} 
+0

Veuillez reformater votre question et montrer du code (dans page_load et javascript que vous utilisez pour assigner une valeur au champ caché). – TheVillageIdiot

+0

Quelqu'un peut-il reformater le code? – Billy

Répondre

0

Vous ne pouvez pas appeler javascript au Page_Load. C'est quelque chose de côté client, donc ça devrait venir du navigateur seulement. Vous pouvez vérifier si la page est postback en utilisant IsPostBack propriété de Page objet comme celui-ci:

if(IsPostBack) 
{ 
    //this is coming from browser so you javascript might have been 
    //called and proper value set in hidden field. 
} 
0

Javascript est exécuté sur le côté client, ne peut donc pas fonctionner en cas Page_Load sur le serveur.

De l'apparence de votre code, je suis sûr que vous n'avez pas besoin javascript, vous pouvez simplement mettre la valeur en SessionVariable comme:

Session.Add (« DateRendered », DateTime.Now. AddDays (10) .ToString ("MM/jj/aaaa"));

Ensuite, récupérez-le plus tard. ASP.net prend soin de le stocker dans la demande/réponse. RegisterStartupScript enregistrera votre bloc de script pour le chargement de la page suivante.

0

Si vous voulez juste que de la valeur soit transférée à la page .cs, écrivez une méthode statique sur le fichier .cs et appelez-la depuis javascript en utilisant PageMethods.MethodName();

Questions connexes