【问题标题】:How do use 'input type="Submit" OnServerClick=' from codebehind如何从后面的代码中使用'input type="Submit" OnServerClick='
【发布时间】:2010-07-01 15:41:20
【问题描述】:

解决 IIS 会话状态问题 我找到了一个简单的页面用作测试。此页面有效。

<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”的定义,并且找不到接受“ASP.webform1_aspx”类型的第一个参数的扩展方法“Session_Add”(您是否缺少使用指令还是程序集引用?)

我需要做什么才能完成这项工作?

【问题讨论】:

  • 别以为你能做到。尝试将其更改为 asp:button 服务器控件(以便正确连接事件处理程序)。

标签: c# asp.net


【解决方案1】:

&lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="YourPageName.aspx.cs" Inherits="ClassNameOfCodeBehindeWithFullNamespace" %&gt;

以上内容需要在您的 aspx 页面上方

更新
您需要为您的方法添加 protected 修饰符。

【讨论】:

  • 是什么。代码隐藏是使用 VS 2010 与 aspx 同时创建的。它编译正常,这是一个运行时错误。
猜你喜欢
  • 1970-01-01
  • 2013-09-07
  • 2013-01-03
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
相关资源
最近更新 更多