2010-07-01 7 views
1

Dépannage d'un problème d'état de session IIS J'ai trouvé une page simple à utiliser comme test. Cette page fonctionne.Comment utiliser 'input type = "Soumettre" OnServerClick =' de codebehind

<body> 
<form id="form1" runat="server"> 
    <div> 
     <input type="text" 
     id="text1" 
     runat="server" 
     /> 
     <input type="Submit" 
     id="Submit1" 
     OnServerClick="Session_Add" 
     value="Add to Session State" 
     runat="server" 
      /> 
     <input type="Submit" 
     id="Submit2" 
     OnServerClick="CheckSession" 
     value="View Session State" 
     runat="server" 
     /> 
     <hr size="1"/> 
     <font size="6"/><span id="span1" runat="server"/> 
    </div> 
</form> 
<script language="C#" runat="server"> 
    void Session_Add(Object sender, EventArgs e) 
    { 
     Session["MySession"] = text1.Value; 
     span1.InnerHtml = "Session data updated! <P> Your session contains: <font color=red>" + 
        Session["MySession"].ToString() + "</font>"; 
    } 

    void CheckSession(Object sender, EventArgs e) 
    { 
     if (String.IsNullOrEmpty(Session["MySession"].ToString())) 
     { 
      span1.InnerHtml = "NOTHING, SESSION DATA LOST!"; 
     } 
     else 
      span1.InnerHtml = "Your session contains: <font color=red>" + 
        Session["MySession"].ToString() + "</font>"; 
    } 
</script> 

Pour aucune raison particulière autre que je voulais le faire de cette façon, j'essayé de déplacer la partie dans le bloc de script dans un fichier behind. Ce code suit:

 protected void Page_Load(object sender, EventArgs e) 
    { 
     Submit1.ServerClick += new System.EventHandler(this.Session_Add); 
     Submit2.ServerClick += new System.EventHandler(this.CheckSession); 


    } 

    void Session_Add(Object sender, EventArgs e) 
    { 
     Session["MySession"] = text1.Value; 
     span1.InnerHtml = "Session data updated! <P> Your session contains: <font color=red>" + 
        Session["MySession"].ToString() + "</font>"; 
    } 

    void CheckSession(Object sender, EventArgs e) 
    { 
     if (String.IsNullOrEmpty(Session["MySession"].ToString())) 
     { 
      span1.InnerHtml = "NOTHING, SESSION DATA LOST!"; 
     } 
     else 
      span1.InnerHtml = "Your session contains: <font color=red>" +    
        Session["MySession"].ToString() + "</font>"; 
    } 

} 

compilateur Message d'erreur: CS1061: 'ASP.webform1_aspx' ne contient pas de définition de 'Session_Add' et aucune méthode d'extension 'Session_Add' accepter un premier argument de type « ASP.webform1_aspx 'pourrait être trouvé (manque-t-il une directive d'utilisation ou une référence d'assemblage?)

Que devrais-je faire pour que cela fonctionne?

+0

Ne pensez pas que vous pouvez le faire. Essayez de le remplacer par un contrôle serveur asp: button (pour qu'il connecte correctement les gestionnaires d'événements). – RPM1984

Répondre

1

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="YourPageName.aspx.cs" Inherits="ClassNameOfCodeBehindeWithFullNamespace" %>

ci-dessus doit être là au-dessus de votre page ASPX

MISE À JOUR
Vous devez ajouter protected modificateur pour vos méthodes.

+0

<% @ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "SessionStateTester.aspx.cs" Inherits = "SessionStateStuff.WebForm1"%> Est ce qu'il y avait. Le codebehind a été créé en même temps que l'aspx utilisant VS 2010. Et il compile OK, c'est une erreur d'exécution. – Kal

+0

Mis à jour ma réponse – IsmailS

+0

Ça l'a fait. Merci. – Kal

Questions connexes