Asp.net自定义控件开发任我行-TagPrefix标签(2)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Asp.net自定义控件开发任我行-TagPrefix标签(2)

Asp.net自定义控件开发任我行-TagPrefix标签(2)

 2013/9/16 15:46:40  蓝色天空__任我行  博客园  我要评论(0)
  • 摘要:前面我们已经做了一个最简单的TextBox的马甲,此篇文章,我们来讲讲自定义控件的标签。大家可能看到了上一篇中拖放进来的代码是<cc1:TextEditID="TextEdit1"runat="server"></cc1:TextEdit>这肯定不是我们想要的结果了,cc1这种标签命名不好,而且给人感觉也“太水了”,现在我们来改进代码修改代码usingSystem;usingSystem.Text;usingSystem.Web.UI
  • 标签:.net ASP.NET net tag 开发 控件 自定义控件 自定义

  前面我们已经做了一个最简单的TextBox的马甲,此篇文章,我们来讲讲自定义控件的标签。大家可能看到了上一篇中拖放进来的代码是

   <cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit>

  这肯定不是我们想要的结果了,cc1这种标签命名不好,而且给人感觉也“太水了”,现在我们来改进代码

  •   修改代码

using System;
using System.Text;
using System.Web.UI;
using System.ComponentModel;//包含组件开发所必须含有的(属性)Attribute;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

namespace XYB.Controls
{
   [assembly:TagPrefix("XYB.Controls","XYB")]//命名空间+标签名
    public class TextEdit:TextBox
    {

    }
}

 其实我们就只加一行代码,我们再来看一下UI层的代码吧 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextEditUI.aspx.cs" Inherits="XYB.UI.TextEditUI" %>

<!--此行代码是自动生成-->
<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" 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>
</head>
<body>
    <form id="form1" runat="server">
   
   <!--标签还是没有发生什么变化-->
    <cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit>
 
    </form>
</body>
</html>

我们发现标签还是cc1,我们会看到上面的<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" TagPrefix="cc1" %>
TagPrefix="cc1",我们只需要把TagPrefix="cc1"改成TagPrefix="XYB",现在我们再拖一个控件进来看看

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextEditUI.aspx.cs" Inherits="XYB.UI.TextEditUI" %>

<!--此行代码是自动生成-->
<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" TagPrefix="XYB" %>

<!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>
</head>
<body>
    <form id="form1" runat="server">   
   <!--标签还是没有发生什么变化-->
    <cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit> 
     <!--标签已经发生变化-->
    <XYB:TextEdit ID="TextEdit2" runat="server"></XYB:TextEdit>
    </form>
</body>
</html>

现在标签已经什么变化了<XYB:TextEdit ID="TextEdit2" runat="server"></XYB:TextEdit>。现在总算是变了,但是细想一下,我们还有更好的做法。以后我们把这个类库做大了,里面封装了好多类,难道我们是不是每个页面上都去加一句

[assembly:TagPrefix("XYB.Controls","XYB],<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" TagPrefix="XYB" %>吗?这显然是不科学的,先不说维护起来困难,日后还会遭人鄙视,还是有很多的重复工作的。

  •   修改配置文件

    我们修改一下web.config文件,在<system.web>节点下面加上如下代码

    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID">
            <controls>
                <add namespace="XYB.Controls" assembly="XYB.Controls" tagPrefix="XYB"/>
            </controls>
          </pages>

     我整个配置文件代码如下

<?xml version="1.0" encoding="utf-8"?>

<!--
  有关如何配置 ASP.NET 应用程序的详细消息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID">
            <controls>
                <add namespace="XYB.Controls" assembly="XYB.Controls" tagPrefix="XYB"/>
            </controls>
        </pages>
    </system.web>

</configuration>

现在我们把TextEditUI.aspx之前的拖进来的代码注释掉,或者删掉也行。把TextEdit类中的[assembly:TagPrefix("XYB.Controls","XYB")]代码也删掉。重新生成。

TextEdit.cs代码如下:

using System;
using System.Text;
using System.Web.UI;
using System.ComponentModel;//包含组件开发所必须含有的(属性)Attribute;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

namespace XYB.Controls
{
    public class TextEdit:TextBox
    {

    }
}


HTML代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextEditUI.aspx.cs" Inherits="XYB.UI.TextEditUI" %>

<!--此行代码是自动生成-->
<%--<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" TagPrefix="XYB" %>--%>

<!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>
</head>
<body>
    <form id="form1" runat="server">   
    <!--标签还是没有发生什么变化-->
    <%--<cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit> --%>
     <!--标签已经发生变化-->
   <%-- <XYB:TextEdit ID="TextEdit2" runat="server"></XYB:TextEdit>--%>
 
    </form>
</body>
</html>

我们再来拖进一个控件进来,标签还是发生改变

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextEditUI.aspx.cs" Inherits="XYB.UI.TextEditUI" %>

<!--此行代码是自动生成-->
<%--<%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" TagPrefix="XYB" %>--%>

<!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>
</head>
<body>
    <form id="form1" runat="server">   
    <!--标签还是没有发生什么变化-->
    <%--<cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit> --%>
     <!--标签已经发生变化-->
   <%-- <XYB:TextEdit ID="TextEdit2" runat="server"></XYB:TextEdit>--%>
 

    <XYB:TextEdit ID="TextEdit1" runat="server"></XYB:TextEdit>

    </form>
</body>
</html>

至此,才算是真的大功告成。

上一篇: Debug 运行正常,Release版本不能正常运行(转) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名