把某个asp.net 控件替换成自定义控件的方法

  功能:可以把某个asp.net 控件 替换成 自定义的控件

  pages 的 tagMapping 元素(ASP.NET 设置架构)

  定义一个标记类型的集合,这些标记类型在编译时重新映射为其他标记类型。

  此元素是 .NET Framework 2.0 版中的新元素。

  

复制代码 代码如下:

  <pages>

  <tagMapping>

  <add

  tagType=

  "System.Web.UI.WebControls.WebParts.WebPartManager"

  mappedTagType=

  "Microsoft.Sharepoint.WebPartPartManager,

  MSPS.Web.dll, Version='2.0.0.0'"

  />

  </tagMapping>

  </pages>

  前端代码:

  

复制代码 代码如下:

  <form id="form1" runat="server">

  <div>

  <asp:Label ID="lb1" runat="server" Text="lb"></asp:Label>

  </div>

  </form>

  其生成的HTML如下:

  

复制代码 代码如下:

  <form name="form1" method="post" action="Default.aspx" id="form1">

  <div>

  <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1ODYxMzExNjlkZIRGtA8oGwNrNQd7V9ZkX3zxcLan" />

  </div>

  <div>

  <span id="lb1">lb</span>

  </div>

  </form>

  在配置文件的pages节点中加入

  

复制代码 代码如下:

  <tagMapping>

  <add tagType="System.Web.UI.WebControls.Label" mappedTagType="CJQ.Web.MyLabel" />

  </tagMapping>

  其中自定义控件的代码是

  

复制代码 代码如下:

  namespace CJQ.Web

  {

  public class MyLabel : System.Web.UI.WebControls.Label

  {

  protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)

  {

  writer.Write("接收:");

  base.RenderContents(writer);

  }

  }

  }

  其生成的HTML如下:

  

复制代码 代码如下:

  <form name="form1" method="post" action="Default.aspx" id="form1">

  <div>

  <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1ODYxMzExNjlkZIRGtA8oGwNrNQd7V9ZkX3zxcLan" />

  </div>

  <div>

  <span id="lb1">接收:lb</span>

  </div>

  </form>