Asp.Netカスタムコントロール開発任我行(2)-TagPrefixラベル
17510 ワード
サマリ
前述したように、最も簡単なTextBoxのベストを作成しました.この文章では、カスタムコントロールのラベルについて説明します.前回ドラッグアンドドロップしたコードを見たかもしれませんが
コードの変更
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
{
}
}
実は1行のコードしか追加していませんが、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>
ラベルがcc 1なのか、上の<%@Register Assembly="XYB.Controls"Namespace="XYB.Controls"TagPrefix="cc 1"%>TagPrefix="cc 1"を見ることができます.TagPrefix="cc 1"を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>
ラベルが変更されました
[assembly:TagPrefix("XYB.Controls","XYB],<%@Register Assembly="XYB.Controls"Namespace="XYB.Controls"TagPrefix="XYB"%>ですか?これは明らかに科学的ではありませんが、メンテナンスが難しいとは言わず、後で軽蔑されることもありますが、やはり多くの繰り返し作業があります.
プロファイルの変更
Webを修正します.configファイル、
プロファイル全体のコードは次のとおりです.
<?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>
これでこそ、本当の大成功だ.
次回予告:
Renderはコントロールを提示し、Render、RenderControl、RenderChildenの関係を議論します.