2010-07-01 45 views
1

解决IIS会话状态问题我发现一个简单的页面用作测试。此页面有效。如何使用'input type =“从代码隐藏中提交”OnServerClick ='

<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> 

对于比我想那样做,其他没有特别的原因,我想在脚本块的部分移动到代码隐藏文件。该代码如下:

 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>"; 
    } 

} 

编译器错误消息:CS1061:“ASP.webform1_aspx”不包含关于“Session_Add”的定义和没有扩展方法“Session_Add”接受型的第一参数“ASP.webform1_aspx '可以找到(是否缺少using指令或程序集引用?)

我必须做的,使这项工作?

+0

不要以为你可以做到这一点。 尝试将其更改为asp:按钮服务器控件(以便正确连接事件处理程序)。 – RPM1984 2010-07-02 02:04:26

回答

1

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

上面必须有你对自己的aspx页面

UPDATE
您需要添加protected修改为你的方法之上。

+0

<%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“SessionStateTester.aspx.cs”Inherits =“SessionStateStuff.WebForm1”%> 有什么。代码隐藏与使用VS 2010的aspx同时创建。并且它编译成功,它是一个运行时错误。 – Kal 2010-07-01 16:13:26

+0

更新了我的回答 – IsmailS 2010-07-02 04:22:48

+0

这样做了。谢谢。 – Kal 2010-07-02 17:16:31