参考这篇文章我在网站上加入了含失去焦点相应的textbox
http://blog.csdn.net/macavalier/archive/2009/01/13/3765854.aspx
在  Web  应用当中!我们往往会用到很多  TextBox  来处理录入的信息。在页面提交之前,在  TextBox  失去焦点的时候,可能就是要处理一下我们输入的信息。比如:1、对输入信息的校验2、根据输入的信息对后面即将录入的信息的不同处理3、需要回到服务端处理等等...基于这些要求啊!给  TextBox  加上  OnBlur   的服务端事件就可以了!服务端就会自动生成根  onclick  一样事件this.MyTextBox.OnBlur += new System.EventHandler(this.MyTextBox_OnBlur);这个控件主要的地方就是,继承  TextBox,和  IPostBackEventHandler  接口!公开  OnBlur  事件就可以了!完整的代码如下:using System;
namespace Region.Controls
{ public class PostBackTextBox : System.Web.UI.WebControls.TextBox,System.Web.UI.IPostBackEventHandler
 {
  protected override void Render(System.Web.UI.HtmlTextWriter writer)
  {
   Attributes["onblur"] = Page.GetPostBackEventReference(this);
   base.Render (writer);
  }
  
  public event EventHandler OnBlur;
     
    
  public virtual void RaisePostBackEvent(string eventArgument)
  {
   if (OnBlur != null)
   {
    OnBlur(this, null);
   }  
   
  } }
}如何在程序中使用代码:1.在  web  项目里面添加以上代码所示的类  PostBackTextBox.cs,namespace为Region.Controls2.在.aspx  页面中引用该控件(1).需要先注册一下<%@ Register TagPrefix="custom" Namespace="Region.Controls" %>(2) 然后就使用标签输出效果<custom:PostBackTextBox runat="server" ID="ccf" /> 我将PostBackTextBox.cs文件放到web项目的根目录下,则运行提示 未知的服务器标记“custom:PostBackTextBox”。
若将PostBackTextBox.cs文件放到app_code文件夹中,并将文件属性中的生成操作改为内容,则网站可以运行,但在系统后台无法通过ID的形式访问到该控件。若将文件属性中的生成操作改成编译,则可以访问到该控件,但系统无法运行,提示:基类包括字段“ccf”,但其类型(System.Web.UI.UserControl)与控件 (Region.PostBack.PostBackTextBox)的类型不兼容,经过查看发现VS在后台添加了
protected global::Region.PostBack.PostBackTextBox ccf;这个声明,有些教程说删掉该声明即可,我试了下,结果系统报错:
 CS0433: 类型“Region.PostBack.PostBackTextBox”同时存在于“c:\WINDOWS\Microsoft.NET \Framework\v2.0.50727\Temporary ASP.NET Files\root\47a912c1\f8253f2c\App_Code.qtlm8bml.dll”和“c:\WINDOWS \Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\47a912c1\f8253f2c\assembly\dl3\067b0255\dec8c290_c90fcb01 \Dmut.DLL”中
我已经焦头烂额了,希望高手帮助解答,分不多,但一定奉上!谢谢

解决方案 »

  1.   

    1、ASPX页面,一个*.ASPX,对应着一个*.cs文件,两者其实是一个文件,通过两者实现代码分离,每个*.aspx页面都引用着自身的CS文件:如果两个页面引用了相同得.CS文件,在发布得时候也会出现这种错误。
    2、估计是在Bin里面还有一个老版本的DLL,而新版的DLL名字换掉了,新的覆盖不掉老的,并存在BIN里时,有可能会发生这种情况. 解决方案:把BIN里的手动删掉,C:\WINDOWS\Microsoft.NET\Framework\版本号\Temporary   ASP.NET   Files的临时文件里,把相应的目录都删掉,然后重新编译运行就OK.记着bin目录下组件一定要手动删除
     
    3、控件得名字和引用控件得页面取了一模一样得名字,虽然在编译得时候没有错误,但是发布得时候会提示。
      

  2.   

    解决了,可惜使用的是生成动态链接库的方式,首先将PostBackTextBox.cs 编译成dll,然后再注册引用