ダウンロード サンプルファイル (71.7 KB)
本稿では、改行やリンクの自動置換を行うラベルコントロールを例に、Webカスタムコントロールの作成方法を解説します。既存のコントロールを修正する形式で作成するので、初心者でも理解しやすくなっています。
はじめに
ASP.NETは非常に強力な基盤です。標準で用意されているコントロールもかなり便利なものばかりです。ただし、もちろん万能というわけではありません。
Webカスタムコントロールは簡単に作ることができ、細かい挙動を変更するのに便利です。Webカスタムコントロールをどのように作成すればよいか一緒に見ていきましょう。
対象読者
ASP.NETに興味のある方。
必要な環境
Visual Studio 2005の環境で検証しています。2002、2003でも流用できると思います。
標準のラベル機能の確認
データを表示する際、元データが改行つきのデータだった場合は、どのように表示させているでしょうか? まずは、標準のラベルコントロールを使った例を示します。
string DBからのデータ = "a\r\nb\r\nc"; this.Label1.Text = DBからのデータ;
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c" Me.Label1.Text = DBからのデータ

このように改行が入っているにもかかわらず、スペースが開いているだけになってしまっています。ASP.NETは、Webサーバ側でHTML(XHTML)に変換して出力しているため、改行は、HTMLでは\r\nなどで表現するのではなく<br>に、ASP.NETのようなXHTMLでは<br />に変換しなくてはいけません。
それでは先ほどのコードを、改行を変換するように修正してみましょう。
string DBからのデータ = "a\r\nb\r\nc"; this.Label1.Text = DBからのデータ.Replace("\r\n", "<br />");
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c" Me.Label1.Text = DBからのデータ.Replace(vbNewLine, "<br />")
実行結果は次のようになり、無事に改行されることが確認できます。

ただし、このやり方は非常に問題があります。項目が多い画面の場合にも同じ要領でやっていかなくてはいけないのでしょうか? また、データバインディングを用いた場合に、このようなReplaceを行うことが本当によいことでしょうか?
この記事は参考になりましたか?
- この記事の著者
-
中 博俊(ナカ ヒロトシ)
大阪でフリーのソフトウェアエンジニア兼テクニカルライターとして日々新技術で楽しんでいる。MSMVP for C# ブログ:http://blogs.wankuma.com/naka/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
