最も簡単なWebコントロールを作る
6992 ワード
原文:劉武|簡単なwebコントロールを作る
前回はasp.Netサーバコントロールのライフサイクルについて知りましたが、本編では最も簡単な例を作ります.
まず新しいプロジェクトを作りますNet.WebControlsは、私のすべてのカスタムコントロールを保存するために使用されます.
次に、プロジェクトを右クリックし、「追加」>「新規」を選択します.ここでは、Webカスタムコントロールを選択し、MyHyperLinkと名前を付けます.このコントロールは、Welcome To Liuwu.Netのようなハイパーリンクになります.
Visual Studioでは、次のテンプレートが生成されます.
C#-Code:
document.getElementById('snippet_42').style.display='block';
まだ分からないことが多いですが、大丈夫です.コントロール開発の最終目的はHTMLコードをクライアントに出力することであり、RenderContentsメソッドはこのタスクを完了することです.上のハイパーリンクを見てみると、彼女のHTMLコードはhttp://www.liuwu.net"target="_blank">Welcome To Liuwuであるべきではないか.Netは、RenderContentsメソッドにこのコードを入力すればいいです.
以下に、実装方法を示します.
C#-Code:
document.getElementById('snippet_43').style.display='block';
ここではHtmlTextWriterのWriteメソッドを用いてHTMLコードを直接出力している(表示の便宜上、ここでは文字列を分解している).
このプロジェクトをコンパイルし、Webサイトを追加すると、ツールバーに先ほど作成したコントロールが表示され、直接ページにドラッグすると使用できます.具体的な手順は面倒ではありません.
この方法に加えて、サーバコントロールのRenderControlメソッドを使用してコントロールを出力することもできます.
C#-Code:
document.getElementById('snippet_44').style.display='block'; ここではSystemを導入することに注意する.Web.UI.HtmlControlsネーミングスペースは、最初の方法に比べて、この方法は明らかに間違いやすいわけではありませんが、完璧ではありません.
次に、3つ目の方法について説明します.
C#-Code:
document.getElementById('snippet_45').style.display='block'; ここではHtmlTextWriterAttributeとHtmlTextWriterTagの列挙をそれぞれ用い,エラーの可能性をさらに回避した.ただし、ラベルに属性を追加する場合は、RenderBeginTagメソッドの前にAddAttributeメソッドを呼び出す必要があります.
参照:厨丁解牛:縦にASPを切り込む.NET 3.5コントロールとコンポーネント開発技術
前回はasp.Netサーバコントロールのライフサイクルについて知りましたが、本編では最も簡単な例を作ります.
まず新しいプロジェクトを作りますNet.WebControlsは、私のすべてのカスタムコントロールを保存するために使用されます.
次に、プロジェクトを右クリックし、「追加」>「新規」を選択します.ここでは、Webカスタムコントロールを選択し、MyHyperLinkと名前を付けます.このコントロールは、Welcome To Liuwu.Netのようなハイパーリンクになります.
Visual Studioでは、次のテンプレートが生成されます.
C#-Code:
namespace Liuwu.Net.WebControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyHyperLink runat=server></{0}:MyHyperLink>")]
public class MyHyperLink : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
document.getElementById('snippet_42').style.display='block';
まだ分からないことが多いですが、大丈夫です.コントロール開発の最終目的はHTMLコードをクライアントに出力することであり、RenderContentsメソッドはこのタスクを完了することです.上のハイパーリンクを見てみると、彼女のHTMLコードはhttp://www.liuwu.net"target="_blank">Welcome To Liuwuであるべきではないか.Netは、RenderContentsメソッドにこのコードを入力すればいいです.
以下に、実装方法を示します.
C#-Code:
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyHyperLink runat=server></{0}:MyHyperLink>")]
public class MyHyperLink : WebControl
{
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<a href=\"http://www.liuwu.net\""+
"target=\"_blank\">Welcome To Liuwu.Net</a>");
}
}
document.getElementById('snippet_43').style.display='block';
ここではHtmlTextWriterのWriteメソッドを用いてHTMLコードを直接出力している(表示の便宜上、ここでは文字列を分解している).
このプロジェクトをコンパイルし、Webサイトを追加すると、ツールバーに先ほど作成したコントロールが表示され、直接ページにドラッグすると使用できます.具体的な手順は面倒ではありません.
この方法に加えて、サーバコントロールのRenderControlメソッドを使用してコントロールを出力することもできます.
C#-Code:
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes.Add("href", "http://www.liuwu.net");
a.Attributes.Add("target", "_blank");
a.InnerText = "Welcome To Liuwu.Net";
a.RenderControl(output);
document.getElementById('snippet_44').style.display='block'; ここではSystemを導入することに注意する.Web.UI.HtmlControlsネーミングスペースは、最初の方法に比べて、この方法は明らかに間違いやすいわけではありませんが、完璧ではありません.
次に、3つ目の方法について説明します.
C#-Code:
output.AddAttribute(HtmlTextWriterAttribute.Href,
"http://www.liuwu.net");
output.AddAttribute(HtmlTextWriterAttribute.Target, "_blank");
output.RenderBeginTag(HtmlTextWriterTag.A);
output.Write("Welcome To Liuwu.Net");
output.RenderEndTag();
document.getElementById('snippet_45').style.display='block'; ここではHtmlTextWriterAttributeとHtmlTextWriterTagの列挙をそれぞれ用い,エラーの可能性をさらに回避した.ただし、ラベルに属性を追加する場合は、RenderBeginTagメソッドの前にAddAttributeメソッドを呼び出す必要があります.
参照:厨丁解牛:縦にASPを切り込む.NET 3.5コントロールとコンポーネント開発技術