如何使用“INPUT TYPE = [提交" OnServerClick从codebehind =' [英] How do use 'input type="Submit" OnServerClick=' from codebehind

查看:120
本文介绍了如何使用“INPUT TYPE = [提交" OnServerClick从codebehind ='的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

疑难解答IIS会话状态的问题,我发现了一个简单的页面作为测试使用。本页面的工作。

 <身体GT;
<表ID =form1的=服务器>
    < D​​IV>
        <输入类型=文本
        ID =text1中
        =服务器
        />
        <输入类型=提交
        ID =Submit1
        OnServerClick =Session_Add
        值=添加到会话状态
        =服务器
            />
        <输入类型=提交
        ID =Submit2
        OnServerClick =CheckSession
        值=查看会话状态
        =服务器
        />
        &所述;小时大小=1/>
        <字体大小=6/><跨度ID =span1=服务器/>
    < / DIV>
< /表及GT;
< SCRIPT LANGUAGE =C#=服务器>
    无效Session_Add(对象发件人,EventArgs的发送)
    {
        会话[MySession的] = text1.Value;
        span1.InnerHtml =会话数据更新< P>您的会话包含:<字体颜色=红色>中+
                    会话[MySession的]的ToString()+< / FONT>中;
    }    无效CheckSession(对象发件人,EventArgs的发送)
    {
        如果(String.IsNullOrEmpty(会话[MySession的]的ToString())。)
        {
            span1.InnerHtml =没什么,会话数据丢失!
        }
        其他
            span1.InnerHtml =您的会话包含:其中,字体颜色=红色>中+
                     会话[MySession的]的ToString()+< / FONT>中;
    }
< / SCRIPT>

有关比我想这样做的其他没有特别的原因,我试图在脚本块的部分移动到codebehind文件。这code如下:

 保护无效的Page_Load(对象发件人,EventArgs的发送)
    {
        Submit1.ServerClick + =新System.EventHandler(this.Session_Add);
        Submit2.ServerClick + =新System.EventHandler(this.CheckSession);
    }    无效Session_Add(对象发件人,EventArgs的发送)
    {
        会话[MySession的] = text1.Value;
        span1.InnerHtml =会话数据更新< P>您的会话包含:<字体颜色=红色>中+
                    会话[MySession的]的ToString()+< / FONT>中;
    }    无效CheckSession(对象发件人,EventArgs的发送)
    {
        如果(String.IsNullOrEmpty(会话[MySession的]的ToString())。)
        {
            span1.InnerHtml =没什么,会话数据丢失!
        }
        其他
            span1.InnerHtml =您的会话包含:其中,字体颜色=红色>中+
                     会话[MySession的]的ToString()+< / FONT>中;
    }}


  

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


我将不得不做,以使这项工作?


解决方案

<%@页面语言=C#AutoEventWireup =真codeBehind =YourPageName.aspx.cs继承=ClassNameOf codeBehindeWithFullNamespace%GT;

上面必须有你的aspx页面

顶部

更新

您需要添加保护修改为你的方法。

Troubleshooting an IIS Session State problem I found a simple page to use as a test. This page works.

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

For no particular reason other than I wanted to do it that way, I tried moving the part in the script block to a codebehind file. That code follows:

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

}

Compiler Error Message: CS1061: 'ASP.webform1_aspx' does not contain a definition for 'Session_Add' and no extension method 'Session_Add' accepting a first argument of type 'ASP.webform1_aspx' could be found (are you missing a using directive or an assembly reference?)

What would I have to do to make this work?

解决方案

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

above needs to be there on top of your your aspx page

UPDATE
You need to add protected modifier for your methods.

这篇关于如何使用“INPUT TYPE = [提交&QUOT; OnServerClick从codebehind ='的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆