现在有一Ajax组件:AjaxText.cs
---
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Collections.Specialized;namespace WebApplication1
{
public class TextChangedEventArgs:EventArgs
{
public TextChangedEventArgs()
{
_text = string.Empty;
}
public TextChangedEventArgs(string text)
{
_text = text;
}
private string _text = string.Empty;
public string Text
{
get { return _text; }
set { Text = value; }
}
}
[DefaultEvent("TextChanged")]
[ToolboxData("<{0}:AjaxText runat=server></{0}:AjaxText>")]
public class AjaxText:WebControl,ICallbackEventHandler
{
private string returnString = string.Empty;
public delegate void TextChangedEventHandler(object sender, TextChangedEventArgs e);
private static readonly object eventTextChanged;
public event TextChangedEventHandler TextChanged
{
add
{
Events.AddHandler(eventTextChanged,value);
}
remove
{
Events.RemoveHandler(eventTextChanged, value);
}
}
static AjaxText()
{
eventTextChanged = new object();
}
[Description("得到或设置一个Text值")]
public string Text
{
get { object o = ViewState["Text"]; return o==null?"":(string)o; }
set { ViewState["Text"] = value; }
}
private string ReturnString
{
get { return (string)ViewState["ReturnString"]; }
set { ViewState["ReturnString"] = value; }
}
public bool IsValid
{
get
{
object o = ViewState["IsValid"];
return o == null ? false : (bool)o;
}
set
{
ViewState["IsValid"] = value;
}
}
public string ClientCallBackScript
{
get
{
object o = ViewState["ClientCallBackScript"];
return o == null ? "null" : o.ToString();
}
set
{
ViewState["ClientCallBackScript"] = value;
}
}
public string GetCallbackResult()
{
return ReturnString;
}
public AjaxText()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (base.Page == null)
{
base.Page.VerifyRenderingInServerForm(this);
}
string callbackScript = Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);
writer.AddAttribute("onblur", callbackScript);
writer.Write("<INPUT type=\"text\" name=\"" + this.UniqueID + "\"onblur=\"" + callbackScript);
writer.Write("\" value=\"" + this.Text + "\"/>");
base.Render(writer);
}
public void RaiseCallbackEvent(string eventArgument)
{
TextChangedEventArgs args = new TextChangedEventArgs(eventArgument);
OnTextChanged(this, args);
ReturnString = Convert.ToString(IsValid);
}
protected virtual void OnTextChanged(object sender, TextChangedEventArgs e)
{
TextChangedEventHandler handler = Events[eventTextChanged] as TextChangedEventHandler;
if (handler != null)
{
Text = e.Text;
handler(this, e);
}
}
}
}
---页面调用此组件进行用户名检查Default前台
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %><%@ Register assembly="WebApplication1" namespace="WebApplication1" tagprefix="cc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<style type="text/css">
.style1 {
width: 280px;
}
</style>
<script type="text/javascript" language="javascript">
function GetCallbackData(res) {
if (res == 'True') {
document.getElementById("Label1").innerHTML = "<font color='blue'>you can go ahead~</font>";
document.getElementById('hi').value = '1';
}
else {
document.getElementById("Label1").innerHTML = "<font color='blue'>I'm sorry , you name has existed in my system~</font>";
document.getElementById('hi').value = '0';
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr><td colspan=2 style="background:Darkgreen">Ajax控件注册实例<input type="hidden" id="hi" runat="server"/></td></tr>
<tr><td>用户名:</td><td class="style1">
<cc1:AjaxText ID="AjaxText1" ClientCallBackScript="GetCallbackData" EnableViewState="True" OnTextChanged="AjaxText1_TextChanged" runat="server" />
<asp:label runat="server" ID="Label1" ></asp:label><br />
</td></tr>
<tr><td>密码:</td><td class="style1"><asp:TextBox runat="server" ID="txtpwd"></asp:TextBox></td></tr>
<tr><td></td><td><asp:Button ID="Button1" runat="server" Text=" 注册"
OnClick="Button1_Click" Width="69px" /></td></tr>
<tr><td colspan=2><asp:label runat="server" ID="Label2" ></asp:label></td></tr>
</table>
</div>
</form>
</body>
</html>--Default后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ViewState["valid"] = Request["hi"];
} protected void Button1_Click(object sender, EventArgs e)
{
string s = (string)ViewState["valid"];
if (s == "0")
{
Response.Write(" 不能进行提交,因为未通过验证\r\nName:" +AjaxText1.Text);
}
else
{
Response.Write("可以正常注册了,我们就可以进行数据库操作了\r\nName:" + AjaxText1.Text);
} }
protected void AjaxText1_TextChanged(object sender, TextChangedEventArgs e)
{
if (e.Text == "aa")
{ this.AjaxText1.IsValid = false;
}
else
{ this.AjaxText1.IsValid = true;
}
}
}
}
此时有一个问题,可以不刷新检查检查用户名是否存在,但是当我点击注册的时候,
AjaxText的所有状态都回到了初始化状态,比如Text,请问怎么保存我的属性等状态 呢"?
---
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Collections.Specialized;namespace WebApplication1
{
public class TextChangedEventArgs:EventArgs
{
public TextChangedEventArgs()
{
_text = string.Empty;
}
public TextChangedEventArgs(string text)
{
_text = text;
}
private string _text = string.Empty;
public string Text
{
get { return _text; }
set { Text = value; }
}
}
[DefaultEvent("TextChanged")]
[ToolboxData("<{0}:AjaxText runat=server></{0}:AjaxText>")]
public class AjaxText:WebControl,ICallbackEventHandler
{
private string returnString = string.Empty;
public delegate void TextChangedEventHandler(object sender, TextChangedEventArgs e);
private static readonly object eventTextChanged;
public event TextChangedEventHandler TextChanged
{
add
{
Events.AddHandler(eventTextChanged,value);
}
remove
{
Events.RemoveHandler(eventTextChanged, value);
}
}
static AjaxText()
{
eventTextChanged = new object();
}
[Description("得到或设置一个Text值")]
public string Text
{
get { object o = ViewState["Text"]; return o==null?"":(string)o; }
set { ViewState["Text"] = value; }
}
private string ReturnString
{
get { return (string)ViewState["ReturnString"]; }
set { ViewState["ReturnString"] = value; }
}
public bool IsValid
{
get
{
object o = ViewState["IsValid"];
return o == null ? false : (bool)o;
}
set
{
ViewState["IsValid"] = value;
}
}
public string ClientCallBackScript
{
get
{
object o = ViewState["ClientCallBackScript"];
return o == null ? "null" : o.ToString();
}
set
{
ViewState["ClientCallBackScript"] = value;
}
}
public string GetCallbackResult()
{
return ReturnString;
}
public AjaxText()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (base.Page == null)
{
base.Page.VerifyRenderingInServerForm(this);
}
string callbackScript = Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);
writer.AddAttribute("onblur", callbackScript);
writer.Write("<INPUT type=\"text\" name=\"" + this.UniqueID + "\"onblur=\"" + callbackScript);
writer.Write("\" value=\"" + this.Text + "\"/>");
base.Render(writer);
}
public void RaiseCallbackEvent(string eventArgument)
{
TextChangedEventArgs args = new TextChangedEventArgs(eventArgument);
OnTextChanged(this, args);
ReturnString = Convert.ToString(IsValid);
}
protected virtual void OnTextChanged(object sender, TextChangedEventArgs e)
{
TextChangedEventHandler handler = Events[eventTextChanged] as TextChangedEventHandler;
if (handler != null)
{
Text = e.Text;
handler(this, e);
}
}
}
}
---页面调用此组件进行用户名检查Default前台
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %><%@ Register assembly="WebApplication1" namespace="WebApplication1" tagprefix="cc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<style type="text/css">
.style1 {
width: 280px;
}
</style>
<script type="text/javascript" language="javascript">
function GetCallbackData(res) {
if (res == 'True') {
document.getElementById("Label1").innerHTML = "<font color='blue'>you can go ahead~</font>";
document.getElementById('hi').value = '1';
}
else {
document.getElementById("Label1").innerHTML = "<font color='blue'>I'm sorry , you name has existed in my system~</font>";
document.getElementById('hi').value = '0';
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr><td colspan=2 style="background:Darkgreen">Ajax控件注册实例<input type="hidden" id="hi" runat="server"/></td></tr>
<tr><td>用户名:</td><td class="style1">
<cc1:AjaxText ID="AjaxText1" ClientCallBackScript="GetCallbackData" EnableViewState="True" OnTextChanged="AjaxText1_TextChanged" runat="server" />
<asp:label runat="server" ID="Label1" ></asp:label><br />
</td></tr>
<tr><td>密码:</td><td class="style1"><asp:TextBox runat="server" ID="txtpwd"></asp:TextBox></td></tr>
<tr><td></td><td><asp:Button ID="Button1" runat="server" Text=" 注册"
OnClick="Button1_Click" Width="69px" /></td></tr>
<tr><td colspan=2><asp:label runat="server" ID="Label2" ></asp:label></td></tr>
</table>
</div>
</form>
</body>
</html>--Default后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ViewState["valid"] = Request["hi"];
} protected void Button1_Click(object sender, EventArgs e)
{
string s = (string)ViewState["valid"];
if (s == "0")
{
Response.Write(" 不能进行提交,因为未通过验证\r\nName:" +AjaxText1.Text);
}
else
{
Response.Write("可以正常注册了,我们就可以进行数据库操作了\r\nName:" + AjaxText1.Text);
} }
protected void AjaxText1_TextChanged(object sender, TextChangedEventArgs e)
{
if (e.Text == "aa")
{ this.AjaxText1.IsValid = false;
}
else
{ this.AjaxText1.IsValid = true;
}
}
}
}
此时有一个问题,可以不刷新检查检查用户名是否存在,但是当我点击注册的时候,
AjaxText的所有状态都回到了初始化状态,比如Text,请问怎么保存我的属性等状态 呢"?
因为在那边又新建了一个对象。