如何使用“INPUT TYPE = [提交" OnServerClick从codebehind =' [英] How do use 'input type="Submit" OnServerClick=' from codebehind
问题描述
疑难解答IIS会话状态的问题,我发现了一个简单的页面作为测试使用。本页面的工作。
<身体GT;
<表ID =form1的=服务器>
< DIV>
<输入类型=文本
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 addprotected
modifier for your methods.这篇关于如何使用“INPUT TYPE = [提交&QUOT; OnServerClick从codebehind ='的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!